我有一组从基类派生的类,如下所示(例如):
function Base(){}
Base.prototype.foo = function() { alert("base"); };
function Derived() {}
Derived.prototype = Object.create( Base.prototype );
Derived.prototype.foo = function() { alert("overridden"); };
var b = new Base();
var d = new Derived();
b.foo();
d.foo();
我想将变量添加到基类(不是类似Java的静态变量,而是每个类实例具有单独值的变量)。但是,我希望Derived
课程也可以访问它们。
我不是Javascript专家,我一直在玩一点,但我无法让它工作。这有可能实现吗?或者我应该实施setter和getter?
答案 0 :(得分:2)
一个例子:
function Base( name ){
this.name = name;
}
function Derived( name, type ) {
Base.call( this, name );
this.type = type;
}
Derived.prototype = Object.create( Base.prototype );
var b = new Base( 'Peter' );
var d = new Derived( 'John', 2 );
因此,Base
类定义了一个实例成员 - 'name'
。 Derived
类定义了一个其他实例成员 - 'type'
。
关键部分是在Base
构造函数调用中调用Derived
构造函数 - 因此,在内部,您将实例“设置”为好像它是Base
实例(通过在所需的参数中),然后使用仅为Derived
个实例定义的附加内容来扩充实例。
因此,在上面的示例中,b
有一个属性 - 'name'
,而d
有两个属性 - 'name'
和'type'
。