Метод класса (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, время: 04:39. |