在学习js过程中,对于对象的概念是必须了解清楚的,不然在做复杂编程的时候,引用对象和拷贝对象的区别,会让你整个人彻底崩溃掉。
Javascript的简单数据类型包括数字、字符串、布尔值、null和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”对象,因为他们拥有方法,但他们是不可变的。Javascript中的对象是可变的键控集合。在javascript中,数组、函数、正则表达式、对象本身都是对象。
对象的定义:
var a={a:1,b:2};
这样就定义了一个对象。
遍历对象的方法,需要使用for in
for(var key in a){
console.log(key+"|"+a[key]);
}
复制对象:
var b=a;
这样,b引用对象a,两个对象的值完全绑定在一起。
拷贝对象
jq中有个方法很好:
var c=$.extend({},a);//浅层拷贝
var c=$.extend(true,{},a);//深层拷贝
这样就复制了键值和a完全相同的对象c,a、c之前没有关系。
对象的引用一旦成立,那么将使用绑定在一起,普通的赋值操作、函数参数值的改变等,都是联动改变所有在引用关系上的对象。
例如
var a={a:1,b:2};
var b=a;
b.c=3;//此时a={a:1,b:2,c:3},b={a:1,b:2,c:3}
function d(p){
p.d=4;
}
d(a);//此时 a={a:1,b:2,c:3,d:4},b={a:1,b:2,c:3,d:4}