我有一个JavaScript/ES6 class,其成员是一个名为x,初始化为的数组[1,2,3,4].
当我在方法中声明一个新变量,调用y并赋值x给它,然后更改其中的值时x,y保持不变,表明它y是一个副本x.
如果我声明并分配y给z在同一方法中调用的变量,则修改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