跳到主要内容

用 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 方法。因此,寄生式继承允许你在不创建新类的情况下,将一个对象的属性和方法复制到另一个对象中,并根据需要添加新的属性或方法。