Size: a a a

2021 April 21

Ю

Юра in pro.js
да
источник

ЕК

Евгений К. in pro.js
Никак не могу понять содержимое [[Prototype]] у this, которое возвращается из super( ).
Почему, с одной стороны, this.[[Prototype]] = ClassA, но this.[[Prototype]].constructor = ClassB? (ведь, по идее, тоже должен быть равен ClassA)
источник

VG

Viktor Gronskiy in pro.js
Только вчера читал, здесь есть ответ https://m.habr.com/ru/post/518360/
источник

M

Makc in pro.js
Хороший вопрос, я в сафари в прото получаю вообще B. Есть кто с последним сафари?
источник

ЕК

Евгений К. in pro.js
К сожалению не смог найти в этой статье ответ. Точно есть? Там в целом описаны механизмы наследования (которые мне, вроде как, понятны), но конкретного ответа на мой вопрос в ней как будто нет.
источник

M

Makc in pro.js
ка насчет последнего коммента?
источник

ЕК

Евгений К. in pro.js
Про то, что .constructor может быть переопределен?
Это тоже понятно. Но почему, когда и кем это происходит в моем примере?
источник

СО

Сергей Овсянников... in pro.js
В Вашем примере в классе B вы сами переопределяете родительский конструктор
источник

ЕК

Евгений К. in pro.js
Не про "этот" же конструктор речь. Речь про свойство .constructor
источник

ЕК

Евгений К. in pro.js
Может дебаггер, конечно, врет... это пока единственное объяснение.
Но вопрос в силе, просветите, кто может, что за магия >_<
источник

E

Etki in pro.js
быстрый консолинг говорит что this.__proto__ !== A.prototype
источник

E

Etki in pro.js
(я немного тупой, поэтому если вопрос не в том, то скажите)
источник

M

Makc in pro.js
так ворос вроде не о том. Вопрос почему в родитель.конструктор находится не  родитель.конструктор а потомок.констурктор
источник

ЕК

Евгений К. in pro.js
Все правильно. this.__proto__ == ClassA (и это, по идее, ожидаемо и нормально)
источник

AT

Anton T in pro.js
'this.__proto__ === ClassA' это ни разу не ожидаемо в вашем коде. Должно быть '''this.__proto__ === ClassB.prototype'''
источник

VG

Viktor Gronskiy in pro.js
а, сорян, неправильно понял вопрос, надо подумать тогда)
источник

E

Etki in pro.js
new A() -> A {}
B.prototype
A {constructor: ƒ}
Опять же, я не спец в js и появился только чтобы подрефрешить знания, но B.prototype / new B().__proto__ это не экземпляр А?
источник

M

Makc in pro.js
ну если открывать в констоли прототип.конструктор то можно попасть в пропасть рекурсии
источник

E

Etki in pro.js
Я не открываю, просто отсюда выглядит, что прототип это

p = new A();
p.constructor = B.constructor;
источник

ЕК

Евгений К. in pro.js
да, я поспешил, глупость написал. Но дебаггер говорит, что в "this.__proto__" именно ClassA.prototype. (и вывод console.log(this.proto); это подтверждает)
Но почему внутри ClassA.prototype.constructor находится ClassB, а не ClassA - я так и не могу разобраться.
источник