javascript下对结构体数组元素的操作问题
本帖最后由 boygrass 于 2013-01-07 23:54:56 编辑 有两种结数组的操作,结果不一样,求解释:
第一种情况:
假设一个结构体数组
shapes = new Array();
结构体这样定义。
var shape = function( wh, radius, style, angle ) {
this.radius = radius;
this.style = style;
this.angle = angle;
this.wh = wh;
}
数组初始化完成后,对数组做如下操作后
var tempShape = shapes[i];
tempShape.angle += 3;
虽然改的是tempShape,但shapes[i]中的数据也是会被改掉的。
第二种情况
var testNum = [6,7,8,9];
var testAnum = testNum[0];
testAnum += 10;
testNum[0];就不会因testNum的修改而更改。
以上两种情况,为什么会不一样。
[解决办法]
第一个是将对象本身赋给了变量 所以变量改的实际上就是那个对象
第二个只是将数组元素的值赋给了变量 所以修改的只是副本 所以数组元素本身没变化
[解决办法]