定義 JavaScript 原型:了解差異
在 JavaScript 中定義物件原型對於繼承和程式碼可重用性至關重要。然而,原型定義有兩種常見的方法:擴展現有原型或完全覆蓋它。
選項 1:擴充現有原型
Person.prototype.sayName = function(name) { alert(name); }
這種方法透過新增方法 sayName 來擴充目前原型物件 Person.prototype。 Person 的現有實例將繼承這個新方法。
選項 2:覆蓋原型
Person.prototype = { sayName: function(name) { alert(name); } }
與選項 1 不同,此方法為 Person 分配一個新的原型物件.prototype,覆蓋原來的。只有 Person 的未來實例才會繼承 sayName 方法。
功能差異和好處
主要功能差異是選項 1 允許現有實例存取新方法,而選項 2 只影響未來的實例。
另一個區別是,透過覆蓋原型(選項 2),您可以無意中丟棄了先前在原始原型中定義的任何其他屬性或方法。雖然這些通常只包含建構函數屬性,但值得注意的是這種潛在的缺點。
建議
選項 1(擴充)通常被認為更簡潔和健壯,因為它確保Person 的所有實例都可以存取 sayName。除非出於特定原因需要重新初始化原型,否則請避免使用選項 2。
替代方法
如果選項 2 的物件字面語法對您有吸引力,請考慮使用 Object。分配以擴展現有原型:
Object.assign(Person.prototype, { sayName: function(name) { alert(name); } });
以上是擴充與覆蓋 JavaScript 原型:哪種方法最好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!