仅具有一个继承级别,您的示例可能无法让您看到的真正好处
Object.create。
通过此方法,您可以轻松实现 差异继承 ,其中对象可以直接从其他对象继承。
在您的
userB示例中,我认为您的
init方法不应该是公共的,甚至不存在,如果您在现有对象实例上再次调用此方法,则
idand
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和
Object.defineProperty方法相似的语法,使用对象常量在属性的第二个参数上初始化属性。
它可以让你设置属性的属性(
enumerable,
writable,或
configurable),它可以是非常有用的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)