Метод класса (is not a function)
Здравствуйте
let app = document.getElementById('app'); class P1 { constructor(name){ Object.setPrototypeOf(this,null); this.name = name; } } class P2 extends P1 { constructor(name){ super(name); } getProto(){ return Object.getPrototypeOf(this); } } let cl = new P2('Luca'); app.innerHTML = cl.getProto(); почему cl.getProto() не находится, но пишет "is not a function"? |
Rise,
зло в этом месте (строка 5 предыдущего поста). строку комментируешь и начинает работать... Object.setPrototypeOf(this,null); я так полагал: P2 наследует от P1, P1 не наследует, а получеатся, что P2 "теряется", тк log(Object.getPrototypeOf(cl)); Цитата:
|
Rise,
я понял. только я хотел другого. я полагал, что отрезал прототип у P1, но для P2 прототип будет P1, а получется, что отрезается полностью вместе с getProto(), хотя это же явно просписанный метод, который, как я полагал не принадлежит никакому прототипу, а является собственным... те P2 -> P1 -> null, а получается что и getProto() отрезается... |
я вот о чём:
class P { constructor() { this.kuku(); } kuku() { alert('kuku'); } } let var1 = new P(); console.log(Object.getPrototypeOf(var1)); var1.__proto__ = null; console.log(Object.getPrototypeOf(var1)); var1.kuku(); куда "куку" делось? ведь я изменил ссылку на прототип сконструированный объект я не трогал все свойства и методы при конструировании пишутся в прототип что ли? |
Часовой пояс GMT +3, время: 22:17. |