使用以下简单示例:
var MyObject = {
name: '',
object_id: '',
awesomeFunction: function() { console.log('awesome'); }
};
现在,这很好,直到我想到原型(prototype)继承。假设我现在想继承这个对象:
var child_object = Object.create(MyObject);
这会立即导致问题,因为子对象没有指定 name
和 object_id
属性,因此这些属性将从父对象(原型(prototype))中获取。并且没有本地方法来强制使用它们自己的版本创建子对象,对吧?
这种理解是否正确?
如果是这样,我是否错误地考虑了 javascript 中的继承?
是否应该将对象视为函数的容器?
最佳答案
And there is no native way to enforce that child objects are created with their own versions of these, right?
如果您希望所有实例都默认具有这些属性,那么您不应该继承而是构造它们。这样做的正常方法是
function Parent(name, id) {
this.name = name;
this.id = id;
}
function Child(name, id) {
Parent.call(this, name, id);
}
现在,当您创建 Child
实例时,它们将拥有自己版本的 name
和 id
。此外,您可以在自己创建它们的同时为其赋值。
关于javascript - 数据属性危险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23220426/