Использование «Object.create» вместо «new»
Javascript 1.9.3 / ECMAScript 5 представляетObject.create
который Дуглас Крокфорд среди других былвыступает в течение долгого времени. Как заменить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 существует).
Лучшее, что я могу придумать, это:
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
создать пользователя "Боб"?