javascript - javascript中的经典继承实现

标签 javascript

我想做的是继承 idname来自TField并覆盖 render TField的功能。我想知道这是否是在 JavaScript 中实现继承的标准方法。

var TField=function(jData)
{
   this.id=jData.id;
   this.name=jData.name;
   this.attributes=jData.attributes;
   this.render=function(){
      alert('TField render.');
   };
};

var TChildField=function(jData)
{
    var t= new TField(jData);
    t.render=function(){
       alert('TChildField render.');
    }
    return t;
}

var tobj={id:"1",name:"test",attribute:{}};


var c= new TChildField(tobj);
alert(c.id);
alert(c.name);

最佳答案

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

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

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

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

然后,链接两个原型(prototype)

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

最后,覆盖 TChildFieldrender()

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);

关于javascript - javascript中的经典继承实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15874375/

相关文章:

javascript - JQuery - 事件绑定(bind)和缓存元素

javascript - 尝试在 find() 中使用 $near 查询时出错

while 循环中的 Javascript。这是可以接受的做法吗?

javascript - 类型错误 : object is not a function - github passport setup

javascript - 浏览器等待 ajax 调用完成,即使在调用 abort 之后(jQuery)

javascript - 我想在 javascript 中调用一个 php 函数,并将两个数组作为参数传递给它。

javascript - 链接 JavaScript (ES6) 代理对象

javascript - 无论如何要找出 Facebook 评论何时加载到页面上?

javascript - 如何从 Angular 4 中的 NVD3 回调导航组件?

javascript - 错误 : Cannot find module '@discordjs/opus'