本文实例讲述了JavaScript对象引用与赋值。分享给大家供大家参考,具体如下:
rush:js;">
如果真要复制对象互不影响,则要通过转换赋值或者遍历key:value来复制你中的方法和属性。
注意:对象的子对象也是引用,所以遍历赋值的时候要判断,子元素是否是对象,如果子元素是对象,则继续对子元素进行遍历赋值。
转换赋值方式:
rush:js;">
var data = {a:1,b:2,c:3,d:[0,2,3]};
var str = JSON.stringify(data);
var data1 = $.parseJSON(str); //$为jQuery对象需要引入jQuery包
data1["e"] = 4;
data1["d"][0] = 11;
console.log(data);
console.log(data1);
输出结果:
rush:js;">
{a: 1,b: 2,c: 3,d: [0,3]}
{a: 1,d: [11,3],e: 4}
相互没有影响
当对象引用做为函数参数传递时候,依然会相互影响,切记
,如下示例:rush:js;">
var data = {a:1,d:{q:4,w:5,e:6}};
var data1 = data;
function con(data2){
data2["r"] = 5;
console.log(JSON.stringify(data2));
}
con(data1);
console.log(JSON.stringify(data));
输出结果:
rush:js;">
{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
{"a":1,"r":5}
对象引用赋值后,如果将对象置空,相互间是不受影响的
,如下:rush:js;">
var arr = {"a":"1","b":"2"};
var arr1 = arr;
arr = {};
arr["a"] = 2;
console.log(arr1);
console.log(arr);
输出结果:
rush:js;">
{"a":"1","b":"2"},{"a":2}
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。