在學(xué)習(xí)js過程中双仍,對于對象的概念是必須了解清楚的,不然在做復(fù)雜編程的時候啡省,引用對象和拷貝對象的區(qū)別,會讓你整個人徹底崩潰掉髓霞。
Javascript的簡單數(shù)據(jù)類型包括數(shù)字卦睹、字符串、布爾值方库、null和undefined值结序。其他所有的值都是對象。數(shù)字纵潦、字符串和布爾值“貌似”對象徐鹤,因為他們擁有方法,但他們是不可變的酪穿。Javascript中的對象是可變的鍵控集合凳干。在javascript中,數(shù)組被济、函數(shù)救赐、正則表達(dá)式、對象本身都是對象。
對象的定義:
var a={a:1,b:2};
這樣就定義了一個對象经磅。
遍歷對象的方法泌绣,需要使用for in
for(var key in a){
console.log(key+"|"+a[key]);
}
復(fù)制對象:
var b=a;
這樣,b引用對象a预厌,兩個對象的值完全綁定在一起阿迈。
拷貝對象
jq中有個方法很好:
var c=$.extend({},a);//淺層拷貝
var c=$.extend(true,{},a);//深層拷貝
這樣就復(fù)制了鍵值和a完全相同的對象c,a轧叽、c之前沒有關(guān)系苗沧。
對象的引用一旦成立,那么將使用綁定在一起炭晒,普通的賦值操作待逞、函數(shù)參數(shù)值的改變等,都是聯(lián)動改變所有在引用關(guān)系上的對象网严。
例如
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}