数据属性是否危险



使用以下简单示例:

var MyObject = {
    name: '',
    object_id: '',
    awesomeFunction: function() { console.log('awesome'); }
};

现在,在我思考原型继承之前,这是可以的。假设我现在想从这个对象继承:

 var child_object = Object.create(MyObject);

这会立即导致问题,因为子对象没有指定nameobject_id属性,因此这些属性将取自父对象(原型)。而且没有本地的方法来强制子对象是用它们自己的版本创建的,对吧?

这种理解正确吗?

如果是,我是否错误地考虑了javascript中的继承?

是否应该将对象视为函数的容器?

而且没有本地的方法来强制子对象是用它们自己的版本创建的,对吧?

如果默认情况下希望所有实例都具有这些属性,则不应继承而是构造它们。正常的方法是

function Parent(name, id) {
    this.name = name;
    this.id   = id;
}
function Child(name, id) {
     Parent.call(this, name, id);
}

现在,当您创建Child的实例时,它们将拥有自己版本的nameid。此外,您可以在创建它们的同时为它们指定值。

最新更新