用 JavaScript写一个实现寄生式继承的方法 ?
参考答案:
寄生式继承是一种通过借用另一个对象来增强当前对象的方法,而不是通过创建一个新的子类来继承父类的特性。在JavaScript中,你可以通过创建一个新对象,将另一个对象的属性复制到新对象中,然后添加新属性或方法来实现寄生式继承。
以下是一个使用寄生式继承的示例:
function createAnother(original) {
var clone = Object.create(original); // 创建一个新对象,其原型为original
clone.sayHello = function() { // 添加新的方法
console.log("Hello from cloned object!");
};
return clone; // 返回增强后的对象
}
var person = {
isHuman: false,
printIntroduction: function() {
console.log("My name is " + this.name + ". Am I human? " + this.isHuman);
}
};
var anotherPerson = createAnother(person);
anotherPerson.name = "John";
anotherPerson.isHuman = true;
anotherPerson.printIntroduction(); // 输出: My name is John. Am I human? true
anotherPerson.sayHello(); // 输出: Hello from cloned object!
在这个示例中,createAnother
函数创建了一个新对象 clone
,其原型为 original
对象。然后,它向 clone
对象添加了一个新的方法 sayHello
。最后,它返回了增强后的 clone
对象。
通过这种方式,anotherPerson
对象继承了 person
对象的属性和方法,并添加了一个新的 sayHello
方法。因此,寄生式继承允许你在不创建新类的情况下,将一个对象的属性和方法复制到另一个对象中,并根据需要添加新的属性或方法。