一尘不染

正确的JavaScript继承

javascript

我已经阅读了很多有关javascript中“继承”的文章。其中一些使用,new而另一些则建议Object.Create。我读得越多,我就越困惑,因为它似乎存在着无穷无尽的变体来解决继承问题。

有人可以告诉我最可接受的方式吗(如果有的话,是事实上的标准)吗?

(我想要一个Model可以扩展RestModel或的基础对象LocalStorageModel。)


阅读 335

收藏
2020-04-25

共1个答案

一尘不染

简单:Object.create并非在所有环境中均受支持,但可以填充new。除此之外,两者具有不同的目的:Object.create只需创建一个对象从其他继承,同时

调用构造函数。使用适当的东西。new
__

就您而言,您似乎希望RestModel.prototype继承自Model.prototypeObject.create(或它的填充)是正确的方法,因为您不想a)创建一个新实例(实例化a
new Model)并且b)不想调用Model构造函数:

RestModel.prototype = Object.create(Model.prototype);

如果要在RestModels上调用Model构造函数,则与原型无关。用于call()apply()用于:

function RestModel() {
    Model.call(this); // apply Model's constructor on the new object
    ...
}
2020-04-25