很明显,类属性可以有自己的 get
和 set
函数。
但是这个
呢?
正如我到目前为止所尝试的那样,做这样的事情是合法的:
class Bind {
constructor(val) {
this.val = val;
}
set this(val) {
alert('not sure what happens here!');
}
get this() {
return this.val;
}
}
所以这些行:
var b = new Bind(123);
b = 456;
应该调用 setter 函数,但警报永远不会触发。
知道那个 setter 是做什么的吗?
最佳答案
b = 456;
因为这不会以任何方式更改 b
的先前值,它只是将先前存储的引用更改为值。一个小例子来说明我的意思:
let a = {it: "wont change" };
let b = a;
console.log(a, b);
b = 456;
console.log(a, b);
如果重写b
会以任何方式改变引用的对象,a
也会改变。
相反,您可以通过以下方式访问设置者:
b.this = 456;
关于JavaScript 类设置自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50369018/