代码如下var astrPaymentJsons = maobjCurrent[2].slice(0);
////////////////////////①///////////////////////////
if (!VerifyReceiptAmount()) {
return false;
}
////////////////////////②///////////////////////////于是在①的时候和②的时候astrPaymentJsons中的值不一样了,求解!!!!注: maobjCurrent[2]为全局变量
VerifyReceiptAmount方法中改变了maobjCurrent[2]的值
////////////////////////①///////////////////////////
if (!VerifyReceiptAmount()) {
return false;
}
////////////////////////②///////////////////////////于是在①的时候和②的时候astrPaymentJsons中的值不一样了,求解!!!!注: maobjCurrent[2]为全局变量
VerifyReceiptAmount方法中改变了maobjCurrent[2]的值
var ar1 = [1,2,3];
var ar2 = ar1.slice(0);
ar1[0] = 'A';
alert(ar2); //1,2,3
是啊 我也感觉很奇怪的,但是上面的astrPaymentJsons是我新定义的啊 我改成“AAABB”这样的都不行 var marray1 = new Array("1", "2", "3"); function clone1() { var array2 = marray1.slice(0);
alert(array2);
if (!VerifyReceiptAmount()) {
return false;
}
alert(array2);
} function VerifyReceiptAmount() {
marray1[0] = "2";
return true;
}
上面这个是我测试用的 也是成功的, 但是代码里的就是不行.....
然后在上面说的///①////,////②////的地方写了alert(astrPaymentJsons[0]);
调试的时候经过VerifyReceiptAmount方法值就被改变了
maobjCurrent[2][intIndex]["ReceiptAmount"] = (floatOrderTotal - floatPartAmountPaid).toString() ;
return true;监视到这一步执行后
astrPaymentJsons[1].ReceiptAmount就被改了..... 哪位高手知道 求解啊
下面贴出代码function clone(jsonObj) {
var buf;
if (jsonObj instanceof Array) {
buf = [];
var i = jsonObj.length;
while (i--) {
buf[i] = clone(jsonObj[i]);
}
return buf;
}else if (jsonObj instanceof Object){
buf = {};
for ( var k in jsonObj) {
buf[k] = clone(jsonObj[k]);
}
return buf;
}else {
return jsonObj;
}
}