Я читаю эту книгу .Проверьте раздел "15.6.4.2 Подводный камень: Метод, который использует супер, не может быть перемещен "
В нем говорится следующее
Вы не можете переместитьметод, который использует super: у такого метода есть внутренний слот [[HomeObject]], который связывает его с объектом, в котором он был создан. Если вы переместите его с помощью присваивания, он продолжит ссылаться на суперсвойства исходного объекта.
Итак, я попытался вызвать его с другим объектом, а также назначить метод экземпляра для другого объекта, но, похоже, он не работает.Это относится к свойствам нового объекта.Возможно, я не правильно понял, что имеет в виду автор.Так, может кто-нибудь, пожалуйста, привести пример?
Hers - это small demo и код ниже
class A {
get a() {
return 1;
}
sayHi() {
console.log(this.a)
}
}
class B extends A {
sayHi() {
super.sayHi();
};
}
var obj = {
a: 4
};
let b = new B();
b.sayHi();
// logs 1
b.sayHi.call(obj);
// logs 4
obj.sayHi = b.sayHi;
obj.sayHi();
// logs 4