【发布时间】:2015-08-20 04:32:33
【问题描述】:
我是 Javascript 新手,现在在 Array.push 和原型中遇到一个问题。
这是我的代码:
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 中查看此运行代码。
【问题讨论】:
标签: javascript arrays object prototype this