本文实例讲述了javascript深拷贝的原理与实现方法。分享给大家供大家参考,具体如下:
要讲JavaScript的拷贝,就得先讲讲javascript中的
值传递
和引用传递
。PHP 中的 & 。
这也是javascript众多弊端中的一个。
我们先看看下面这段代码:
说明,javascript中只有简单类型是值传递,而其他复杂类型比如数组、对象都是默认就是引用传递的。
那么我们如果需要复制一个对象呢?就必须自己定义方法:
函数,其实就是值传递
function cloneObject(srcobj){
var tarobj=new Object();
for(var key in srcobj){//判断对象中是否继续为对象
tarobj[key]=typeof srcobj[key]==='object'?cloneObject(srcobj[key]):srcobj[key];
}
return tarobj;
}
//验证深度拷贝函数的使用
// 测试用例:
var srcObj = {
a: 1,b: {
b1: ["hello","hi"],b2: "JavaScript"
}
};
var abObj = srcObj;//引用传递
var tarObj = cloneObject(srcObj);
srcObj.a = 2;
srcObj.b.b1[0] = "Hello";
console.log(abObj.a);//2
console.log(abObj.b.b1[0]);//Hello,说明普通的=是一种引用传递
console.log(tarObj.a); // 1
console.log(tarObj.b.b1[0]); // "hello",说明我们定义的深拷贝是值传递
内容。
更多关于JavaScript相关内容可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
原文链接:https://www.f2er.com/js/40087.html