只有一层继承,您的示例可能无法让您看到真正的好处Object.create https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/create.
这个方法可以让你轻松实现差异遗传,其中对象可以直接从其他对象继承。
On your userB
例如,我不认为你的init
方法应该是公共的甚至是存在的,如果您在现有对象实例上再次调用此方法,id
and name
属性将会改变。
Object.create
允许您使用第二个参数初始化对象属性,例如:
var userB = {
sayHello: function() {
console.log('Hello '+ this.name);
}
};
var bob = Object.create(userB, {
'id' : {
value: MY_GLOBAL.nextId(),
enumerable:true // writable:false, configurable(deletable):false by default
},
'name': {
value: 'Bob',
enumerable: true
}
});
如您所见,可以在第二个参数上初始化属性Object.create
,对象字面量的语法类似于Object.defineProperties
and Object.defineProperty
方法。
它允许您设置属性属性(enumerable
, writable
, or configurable
),这确实很有用。