Answer

Answer

t.me/js_test

Ответ:

John
undefined

Обьяснение:

Почему user2.name приняло значение undefined?

Рассмотрим, как отработал вызов new user.constructor('Pete'):

  1. Сначала ищется свойство constructor в объекте user. Не нашлось.
  2. Потом задействуется поиск по цепочке прототипов. Прототип объекта user – это User.prototype, и там тоже нет искомого свойства.
  3. Значение User.prototype – это пустой объект {}, чей прототип – Object.prototypeObject.prototype.constructor == Object. Таким образом, свойство constructor всё-таки найдено.

Наконец срабатывает let user2 = new Object('Pete'), но конструктор Object игнорирует аргументы, он всегда создаёт пустой объект: let user2 = {} – это как раз то, чему равен user2 в итоге.

Код для проверки:

function User(name) {
 this.name = name;
}
User.prototype = {};

let user = new User('John');
let user2 = new user.constructor('Pete');

console.log(user.name);
console.log(user2.name);

Report Page