javascript中的经典继承实现

时间:2013-04-08 08:18:23

标签: javascript

我要做的是继承id中的nameTField并覆盖render的{​​{1}}功能。我想知道这是否是在JavaScript中实现继承的标准方法。

TField

2 个答案:

答案 0 :(得分:1)

这更像是装饰器模式继承。但它按预期工作,只需拨打c.render()即可。 要进行经典的原型继承,只需将TField指定为TChildField的原型。 看Understanding prototypal inheritance in JavaScript

答案 1 :(得分:1)

首先,从构造函数中删除render定义并将其直接添加到原型中可能是个好主意:

TField.prototype.render=function(){
      alert('TField render.');
};

其次,要设置构造函数的继承,请使用:

var TChildField=function(jData)
{
    TField.call(this,jData)
}

然后,链接两个原型

TChildField.prototype=Object.create(TField.prototype)

最后,为render()

覆盖TChildField
TChildField.prototype.render=function(){
      alert('TChildField render.');
};


var TField=function(jData)
{
   this.id=jData.id;
   this.name=jData.name;
   this.attributes=jData.attributes;

};

TField.prototype.render=function(){
      alert('TField render.');
};

var TChildField=function(jData)
{
    TField.call(this,jData)
}

var tobj={id:"1",name:"test",attribute:{}};
TChildField.prototype=Object.create(TField.prototype)
TChildField.prototype.render=function(){
      alert('TChildField render.');
};
var c= new TChildField(tobj);
alert(c.id);
alert(c.name);