JavaScript 类设置自身

标签 javascript class ecmascript-6 setter es6-class

很明显,类属性可以有自己的 getset 函数。 但是这个呢?

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

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/

相关文章:

JavaScript - for 循环内的 setTimeout 函数导致代码在 for 循环完成之前执行

oop - MATLAB : Instantiate a class from an empty Instance to a 'Blank' Instance

python - Maya Python调用模块类函数

javascript - 使用 Webpack 1 构建 CSS 和 Javascript 文件

javascript - 计算函数返回 null - 获取问题?

javascript - 我如何给这个元素惯性/动量?

java - 使用 java beans/command/java class 和 getter setter 几乎每个地方都相同是很好的实践

javascript - async/await 和 ES6 生成器之间的区别

javascript - WebStorm 2016.3 + Electron : Unresolved function or method

javascript - 根据月份显示jquery完整日历中的行和列总数