深度拷贝就是把父对象拷贝到子对象上,而且两者的内存和以后的操作都互不影响的拷贝,本文主要和大家分享js深拷贝实例探讨,希望能帮助到大家。
(1)方法1
function copy(obj1,obj2){
var obj2=obj2||{};
for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象
obj2[name]= (obj1[name].constructor===Array)?[]:{};
copy(obj1[name],obj2[name]); //然后来无限递归
}else{
obj2[name]=obj1[name]; //如果不是对象,直接赋值。
}
} return obj2;
}使用方法:
刚开始接触模版引擎的 PHP 设计师,听到 Smarty 时,都会觉得很难。其实笔者也不例外,碰都不敢碰一下。但是后来在剖析 XOOPS 的程序架构时,开始发现 Smarty 其实并不难。只要将 Smarty 基础功练好,在一般应用上就已经相当足够了。当然基础能打好,后面的进阶应用也就不用怕了。 这篇文章的主要用意并非要深入探讨 Smarty 的使用,这在官方使用说明中都已经写得很完整了。笔
385
var obj1 = {
se:[{a:1,b:2},{c:3}],
sa:{a:"g"},
sc:function(){console.log(1)}
}var n_obj = copy(obj1,{})
console.log(n_obj)(2)方法2
function d_clone(obj) {
return Object.getPrototypeOf(Object.create(obj));
}使用方法:
var obj1 = {
se:[{a:1,b:2},{c:3}],
sa:{a:"g"},
sc:function(){console.log(1)}
}var n2_obj = d_clone(obj1);
console.log(n2_obj)(3)方法3
JSON.parse(JSON.stringify(obj)
说明:obj的属性中不能含有函数。
(1)方法1
function copy(obj1,obj2){
var obj2=obj2||{};
for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象
obj2[name]= (obj1[name].constructor===Array)?[]:{};
copy(obj1[name],obj2[name]); //然后来无限递归
}else{
obj2[name]=obj1[name]; //如果不是对象,直接赋值。
}
} return obj2;
}使用方法:
var obj1 = {
se:[{a:1,b:2},{c:3}],
sa:{a:"g"},
sc:function(){console.log(1)}
}var n_obj = copy(obj1,{})
console.log(n_obj)(2)方法2
function d_clone(obj) {
return Object.getPrototypeOf(Object.create(obj));
}使用方法:
var obj1 = {
se:[{a:1,b:2},{c:3}],
sa:{a:"g"},
sc:function(){console.log(1)}
}var n2_obj = d_clone(obj1);
console.log(n2_obj)(3)方法3
JSON.parse(JSON.stringify(obj)
说明:obj的属性中不能含有函数。
相关推荐:
相关推荐:
以上就是js深拷贝实例探讨的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号