gpt4 book ai didi

Javascript Array.push() 方法

转载 作者:行者123 更新时间:2023-11-30 12:17:17 25 4
gpt4 key购买 nike

我是 Javascript 的新手,现在在 Array.push 和原型(prototype)中遇到一个问题。

这是我的代码:

function Ball(array) {
this.array = array;
}

Ball.prototype.allArray = []; // this is a property shared among ALL Ball object, though here I just create one object...
Ball.prototype.addArray = function() {
this.allArray.push(12);
}

Ball.prototype.changeArray = function() {
var array = this.array;
var allArray = this.allArray;

for (var i = 0; i < allArray.length; i++) {
array.push(allArray[i]);
}
// Array.prototype.push.apply(array, allArray); // same result as above

alert(array.length); // 3 Expected

/* PROBLEM */
alert(this.array.length); // 3, expected 2 Why 3? We just change array NOT this.array...
}

var ball = new Ball([123, 198]);
ball.addArray();
ball.changeArray();

如上面的代码所述,我有一个问题,为什么是 this.array.length = 3,而不是 2

changeArray 方法中,我一直只更改数组值,而不是 array.length。这意味着 this.array 的值应该保持不变。因此,this.array.length 应该是2

我的想法有什么问题吗?另外,如何在继续得到array.length = 3的同时得到this.array.length = 2;

附言您也可以查看 JSFiddle 中的运行代码.

最佳答案

this.array;//内部changeArray()指向您传递给 new Ball([123, 198]) 的同一个数组;

var array = this.array;//这使得数组指向同一个数组。因此对数组的更改也会更改您的数组。

关于Javascript Array.push() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32109610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com