小编NMr*_*Mrt的帖子

为什么ES6在类方法中复制类变量?

我有一个JavaScript/ES6 class,其成员是一个名为x,初始化为的数组[1,2,3,4].

当我在方法中声明一个新变量,调用y并赋值x给它,然后更改其中的值时x,y保持不变,表明它y是一个副本x.

如果我声明并分配yz在同一方法中调用的变量,则修改z更改y,但不会更改x.

这表明声明一个类级别数组(对象?)然后将其分配给方法内的变量会复制该对象.这与C#等语言有很大不同.

为什么在JavaScript/ES6中以这种方式实现?

class Alpha {
  constructor() {
    this.x = [1, 2, 3, 4];
  }

  DoSomething() {

    console.log('x is ' + this.x); // x is 1,2,3,4

    let y = this.x;
    this.x = [99, 99, 99, 99];

    console.log('x is ' + this.x); // x is 99,99,99,99
    console.log('y is ' + y); …
Run Code Online (Sandbox Code Playgroud)

javascript reference pass-by-reference variable-assignment ecmascript-6

-2
推荐指数
1
解决办法
84
查看次数