首页 > 解决方案 > JavaScript 类设置自己

问题描述

很明显,类属性可以有它自己的get功能set。但是呢this

正如我到目前为止所尝试的那样,做这样的事情是合法的:

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 函数,但警报永远不会触发。

知道那个二传手是做什么的吗?

标签: javascriptclassecmascript-6setteres6-class

解决方案


  b = 456;

因为这不会b以任何方式更改先前的值,它只是将先前存储的引用更改为一个值。我的意思的一个小例子:

let a = {it: "wont change" };
let b = a;

console.log(a, b);

b = 456;

console.log(a, b);

如果重写b会以任何方式改变被引用的对象,a那么也会改变。


相反,您可以通过以下方式访问 setter:

 b.this = 456;

推荐阅读