Skip to content

Commit b5370ae

Browse files
authored
Изменение: Hotfix
Hotfix
1 parent 130ddfd commit b5370ae

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

  • 1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor

1-js/9-prototypes/2-new-prototype/4-new-object-same-constructor/solution.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ alert( obj2.name ); // undefined
3535

3636
1. При вызове new obj.constructor('Петя'), obj ищет у себя свойство constructor - не находит.
3737
2. Обращается к своему скрытому свойству __proto__, которое ведёт к прототипу.
38-
3. Прототипом будет (*)
38+
3. Прототипом будет (*).
3939
4. Далее здесь также ищется свойство constructor - его нет.
40-
5. Где ищем дальше? Правильно - у следующего прототипа выше, а им будет Object ({}), не путать с функцией-конструктором Object.
41-
6. У Object ({}) есть constructor, поэтому происходит вызов такого плана: {}.constructor('Петя') или конкретнее: obj.__proto__.__proto__.constructor('Петя').
40+
5. Где ищем дальше? Правильно - у следующего прототипа выше, а им будет Object.prototype.
41+
6. У Object.prototype есть constructor, поэтому происходит вызов такого плана: Object.prototype.constructor('Петя') или конкретнее: obj.__proto__.__proto__.constructor('Петя').
4242
7. Этот метод возвратит объект-обёртку. В зависимости от переданного аргумента будет определятся тип объекта-обёртки, в нашем случае была передана строка 'Петя', значит будет возвращено: String {0: "П", 1: "е", 2: "т", 3: "я", length: 4, [[PrimitiveValue]]: "Петя"} (в Chrome), как будто мы вызвали new String('Петя'). Если бы мы передали число 5, то возвратилось: Number {[[PrimitiveValue]]: 5} и так далее.
4343
8. Поэтому obj2.name равен undefined, так как, у String {0: "П", 1: "е", 2: "т", 3: "я", length: 4, [[PrimitiveValue]]: "Петя"} нету свойства name.

0 commit comments

Comments
 (0)