继承类中的本地属性/变量

时间:2012-01-03 01:57:34

标签: javascript variables inheritance local

我有一组从基类派生的类,如下所示(例如):

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?

1 个答案:

答案 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'