原型化为数组的 JavaScript 对象成员:在类实例之间共享
在 JavaScript 中对数组进行原型设计时,了解这些成员是共享的至关重要在所有类实例中。如果您习惯了私有对象成员,这种行为可能看起来违反直觉。
行为解释
JavaScript 的原型机制允许对象从父对象继承属性和方法,称为原型。当您将数组定义为原型中的属性时,从该原型继承的所有对象都可以访问它。
示例脚本演示了此行为:
function Sandwich() { // Uncomment this to fix the problem //this.ingredients = []; }
使用注释行如果不加注释,每个 Sandwich 实例都有自己的私有成分数组。然而,当该行被注释掉时,所有实例共享相同的原型数组。
这意味着向芝士汉堡添加成分也会更新 blt 和Spicy_chicken_sandwich 的成分。为了防止这种情况,您必须在构造函数中定义成分数组,如下面更新的示例所示:
function Sandwich() { this.ingredients = []; }
原型与实例
至关重要区分原型属性和实例属性。原型属性由从该原型继承的所有对象共享,而实例属性对于每个对象都是唯一的。
修复行为的代码修改
在示例脚本中,取消注释该行.成分=[]; Sandwich 构造函数中确保每个实例都按预期拥有自己的成分数组。
结论
了解 JavaScript 中原型数组的行为对于避免意外共享至关重要类实例之间。永远记住,应该是特定于实例的数据应该在构造函数中定义,而共享数据可以通过继承分配给原型。
以上是为什么原型化为数组的 JavaScript 对象成员在类实例之间共享?的详细内容。更多信息请关注PHP中文网其他相关文章!