JavaScript 继承:Object.create 与 new
在 JavaScript 中,可以通过各种方法来实现继承。两种常见讨论的方法是使用 new 关键字和 Object.create。在探索继承时,可用选项的数量可能令人望而生畏。
为了阐明在 JavaScript 中实现继承的最受接受的方法,让我们探讨一下 Object.create 和 new 之间的差异。
Object.create
Object.create 用于创建继承另一个对象的新对象。它不会调用父对象的构造函数。当您只想创建一个从父对象继承特定属性和方法的新对象时,这非常有用。
const baseModel = { property1: "value1", method1: function() {} }; const newModel = Object.create(baseModel);
在此示例中,newModel 从 baseModel 继承了 property1 和 method1。
new
new 关键字调用类或对象的构造函数并创建该类的新实例或对象。它调用构造函数,从而使用特定属性和方法初始化新对象。
class BaseModel { constructor(property1) { this.property1 = property1; } method1() {} } const newModel = new BaseModel("value1");
在此示例中,newModel 是 BaseModel 类的实例,其中 property1 初始化为“value1”。
选择正确的方法
Object.create 和 new 之间的选择取决于是否需要创建一个继承属性和方法的新对象,或者调用父对象的构造函数。
在给定的情况下在这种情况下,您希望拥有一个可以使用 RestModel 或 LocalStorageModel 进行扩展的基本对象模型。使用 Object.create (或其垫片)是正确的方法,因为您不想创建 Model 的新实例并调用其构造函数。
RestModel.prototype = Object.create(Model.prototype);
如果您想在 RestModels 上调用 Model 构造函数,使用 call() 或 apply() 代替:
function RestModel() { Model.call(this); // apply Model's constructor on the new object ... }
以上是Object.create 与 new:何时使用 JavaScript 继承?的详细内容。更多信息请关注PHP中文网其他相关文章!