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

时间:2011-09-09 07:00:38

标签: javascript oop inheritance

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

它是如何制作的?

2 个答案:

答案 0 :(得分:0)

标准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

答案 1 :(得分:0)

我喜欢作弊,这会创建从公共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 );