Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Метод класса (is not a function) (https://javascript.ru/forum/misc/69696-metod-klassa-not-function.html)

Luca 13.07.2017 09:12

Метод класса (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"?

Luca 13.07.2017 09:58

Rise,
зло в этом месте (строка 5 предыдущего поста). строку комментируешь и начинает работать...
Object.setPrototypeOf(this,null);

я так полагал:
P2 наследует от P1, P1 не наследует, а получеатся, что P2 "теряется", тк
log(Object.getPrototypeOf(cl));

Цитата:

> P1 {constructor...}

Luca 13.07.2017 10:27

Rise,
я понял. только я хотел другого.
я полагал, что отрезал прототип у P1, но для P2 прототип будет P1, а получется, что отрезается полностью вместе с getProto(), хотя это же явно просписанный метод, который, как я полагал не принадлежит никакому прототипу, а является собственным...
те P2 -> P1 -> null, а получается что и getProto() отрезается...

Luca 13.07.2017 11:49

я вот о чём:
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.