如何从惰性实例化对象继承

How inherits from lazy instantiation object?

本文关键字:实例化 对象 继承      更新时间:2023-09-26

在我的JavaScript代码中,我有一个延迟实例化对象AAA,我想创建一个新对象BBB,并继承AAA。

它是怎么做的?

标准javascript继承可以通过原型实现

BBB.prototype = new AAA();

但是这样你就不能访问父方法了,如果它们被重写了。出于这个原因,我使用静态属性超类,例如

function AAA() {}
AAA.prototype = {
foo: function() {return 'foo';}
}
function BBB() {}
BBB.superclass = AAA.prototype;
BBB.prototype = {
foo: function() { return BBB.superclass.foo() + "bar";}
}
b = new BBB();
b.foo() //returns foobar

我喜欢作弊,这将创建从公共o继承的对象。我冒昧地重命名了你在问题中要求的变量。

var o = {
    happy: true,
    fun: true,
    time: true
}
var AAA = {
    happy: false
};
AAA.__proto__ = o;
console.log( 'happy', AAA.happy );
console.log( 'fun', AAA.fun );