JavaScript-对象的引用
2016-10-27 21:53
204 查看
基本类型(字符串,数字,布尔值,null,undefined):赋值的时候只是值的复制。
对象类型和函数都是引用的关系,共用地址。
另一种情况:
浅拷贝(浅克隆):
深拷贝:
var a=5; var b=a; b+=5; alert(b); //10 alert(a); //5
对象类型和函数都是引用的关系,共用地址。
var a=[1,2,3]; var b=a; b.push(4); alert(b); //1,2,3,4 alert(a); //1,2,3,4
另一种情况:
var a=[1,2,3]; var b=a; //b和a共用一个地址 b=[1,2,3,4]; //b创建了新的地址 b.push(5); alert(b); //1,2,3,4,5 alert(a); //1,2,3
var a=1; var b=1; alert(a==b); //true 基本类型:值相同则为true
var a=[1,2,3]; var b=[1,2,3]; alert(a==b); //false 对象类型:值相同,但地址不同
var a=[1,2,3]; var b=a; alert(a==b); //true 对象类型:值相同,地址相同
浅拷贝(浅克隆):
var obj1={ a:10 //属性值为基本类型 } function copy(obj){ var newobj={}; for (var attr in obj) { newobj[attr]=obj[attr]; } return newobj; } var obj2=copy(obj1); obj2.a=20; alert(obj1.a); //10
深拷贝:
var obj1={ a:{b:10} //属性值可能为一层也可以为多层 } function deepCopy(obj){ //利用递归的思想 if (typeof obj!= 'object') { //结束循环的条件 return obj; } var newobj={}; for (var attr in obj) { newobj[attr]=deepCopy(obj[attr]); //对属性值进行层层拷贝 } return newobj; } var obj2=deepCopy(obj1); obj2.a.b=20; alert(obj1.a.b); //10
相关文章推荐
- javascript引用对象的方法
- javascript引用对象的方法 (总结)
- javascript学习实录 之三(对象原型引用prototype) --刘小小尘
- 转:《JavaScript—之对象参数的引用传递》
- javascript如何在框架集中引用对象
- javascript引用对象的方法
- javascript练习:8-2对象的引用
- JavaScript 使用方括号([])引用对象的属性和方法 createDelegate
- Javascript delete 引用类型对象
- javascript使用方括号([])引用对象的属性和方法
- Javascript下获取对象引用的两种方法之getElementsByTagName
- javascript引用对象的方法
- 用JAVASCRIPT引用父窗口对象
- javascript不可变的原始值和可变的对象引用
- javascript使用方括号([])和“.”引用对象的属性和方法
- javascript引用对象的方法代码
- javascript对象引用与赋值
- 引用 javascript定义对象写法(整理)
- javascript 对象的创建,引用,释放,删除方法
- JavaScript—之对象参数的引用传递