есть рабочий код:
var Person = {
constructor: function(name,age){
this.name=name;
this.age=age;
}
};
var One = Object.create(Person);
One.constructor("Alex", 32)
console.log(One.name);
console.log(One.age);
вроде бы всё понятно, создаётся объект Person, который в последующем станет прототипом для One, для этого вызываем Object.create(Person), потом используем его методOne.constructor("Alex", 32), и вуаля, всё прекрасно работает! Но увидил другую реализацию данного кода, и завис:
var Person = {
constructor: function(name,age){
this.name=name;
this.age=age;
return this
}
};
var One = Object.create(Person).constructor("Alex", 32);
console.log(One.name);
console.log(One.age);
С одной стороны я понял, что Object.create(Person) возвращает ссылку на объект Person, ну и можно сразу вызвать его метод constructor с нужными нам аргументами, для создания объекта One . . . Но, код работает лишь в том случае, когда в теле функции constructor: function(name,age){...} прописано return this! Объясните мне пожалуйста, в чём суть? Какой объект мы возвращаем, и почему без него не работает? Спасибо!