最佳答案
Javascript 1.9.3/ECmascript 5引入了道格拉斯·克罗克福特 Object.create
,它在很长一段时间内一直是 主张。如何用 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();
(假设 MY_GLOBAL.nextId
存在)。
我能想到的最好的办法就是:
var userB = {
init: function(nameParam) {
this.id = MY_GLOBAL.nextId();
this.name = nameParam;
},
sayHello: function() {
console.log('Hello '+ this.name);
}
};
var bob = Object.create(userB);
bob.init('Bob');
bob.sayHello();
似乎没有任何优势,所以我想我没有得到它。我可能太新古典主义了。如何使用 Object.create
创建用户‘ bob’?