利用“Object.create”而不是“new”进行对象实例化
在 JavaScript 1.9.3 和 ECMAScript 5 中,“Object.create” create”方法提供了一种超越传统“new”关键字的对象创建替代方法。本问题探讨了如何利用“Object.create”替换示例代码中的“new”:
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();
理解 Object.create 的差异继承
“Object.create”在实现差异继承方面提供了显着的优势,其中对象从其他对象而不是类继承属性。在上面的例子中,差异继承可以实现如下:
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 } });
这里,“bob”继承了“userB”的“sayHello”方法,而它的“id”和“name”属性则分别初始化。这种方式为对象创建提供了更大的灵活性。
对象属性属性控制
“Object.create”的另一个好处在于它能够控制对象属性属性(可枚举) 、可写或可配置)通过第二个参数中使用的对象文字。这种粒度控制可以在需要时定义自定义属性行为和不变性。
总而言之,“Object.create”通过支持差异继承和属性属性控制,提供了“new”的强大替代方案,提供了更大的灵活性和JavaScript 中面向对象编程的控制。
以上是在 JavaScript 中什么时候应该使用'Object.create”而不是'new”?的详细内容。更多信息请关注PHP中文网其他相关文章!