首页 > web前端 > js教程 > 正文

Object.create:比'new”更好的实例化对象的方法?

Linda Hamilton
发布: 2024-11-16 20:02:03
原创
901 人浏览过

Object.create: A Better Way to Instantiate Objects Than `new`?

Object.create:实例化对象的新方法

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 的优点

Object.create 相对于 new 的一个优点是它允许差异继承。对象可以直接继承其他对象的属性,而不需要原型链。这是通过将对象作为第二个参数传递给 Object.create 来完成的,您可以在其中定义继承的属性。

另一个优点是它的灵活性。 Object.create 允许您使用属性描述符语法设置属性属性(可枚举、可写、可配置),从而使您可以更好地控制对象属性的行为。

以上是Object.create:比'new”更好的实例化对象的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板