【发布时间】:2019-03-15 16:24:25
【问题描述】:
我正在阅读this book。查看“15.6.4.2 陷阱:使用 super 的方法无法移动”
部分它说明了以下内容
你不能移动一个使用 super 的方法:这样的方法有 内部插槽 [[HomeObject]] 将其与创建的对象联系起来 in. 如果通过赋值移动它,它将继续引用 原始对象的超属性。
所以,我尝试用不同的对象调用它,也将实例方法分配给不同的对象,但它似乎不起作用。它指的是新对象的属性。大概,作者的意思我没听懂。那么,有人可以举个例子吗?
她是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
【问题讨论】:
标签: javascript ecmascript-6 es6-class