Javascript 1.9.3 / ECMAScript 5 引入了 Object.create,这是 Douglas Crockford 大力提倡的方法和其他人。此方法在实例化对象时提供了传统 new 关键字的替代方法。
要将 new 替换为 Object.create,让我们检查以下代码:
var UserA = function(nameParam) { this.id = MY_GLOBAL.nextId(); this.name = nameParam; } UserA.prototype.sayHello = function() { console.log('Hello '+ this.name); } var bob = new UserA('bob'); bob.sayHello();
假设 MY_GLOBAL.nextId 存在,我们可以使用 Object.create 实例化 UserA,如下所示:
var userB = { sayHello: function() { console.log('Hello '+ this.name); } }; var bob = Object.create(userB, { 'id' : { value: MY_GLOBAL.nextId(), enumerable: true }, 'name': { value: 'Bob', enumerable: true } });
Object.create 相对于 new 的一个优点是它允许差异继承。对象可以直接继承其他对象的属性,而不需要原型链。这是通过将对象作为第二个参数传递给 Object.create 来完成的,您可以在其中定义继承的属性。
另一个优点是它的灵活性。 Object.create 允许您使用属性描述符语法设置属性属性(可枚举、可写、可配置),从而使您可以更好地控制对象属性的行为。
以上是Object.create:比'new”更好的实例化对象的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!