Skip to content

Commit 77532ab

Browse files
authored
Update solution.md
1 parent bef9851 commit 77532ab

File tree

1 file changed

+7
-2
lines changed
  • 1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor

1 file changed

+7
-2
lines changed

1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/solution.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ alert( user2.name ); // undefined
3939

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

44-
Наконец срабатывает `let user2 = new Object('Pete')`, но конструктор `Object` игнорирует аргументы, он всегда создаёт пустой объект: `let user2 = {}` -- это как раз то, чему равен `user2` в итоге.
45+
В итоге срабатывает `let user2 = new Object('Pete')`.
46+
47+
Вероятно, это не то, что нам нужно. Мы хотели создать `new User`, а не `new Object`. Это и есть результат отсутствия конструктора.
48+
49+
(На всякий случай, если вам интересно, вызов `new Object(...)` преобразует свой аргумент в объект. Это теоретическая вещь, на практике никто не вызывает `new Object` со значением, тем более, в основном мы вообще не используем `new Object` для создания объектов).

0 commit comments

Comments
 (0)