1. 程式人生 > >JavaScript的引用資料型別-Object型別

JavaScript的引用資料型別-Object型別

什麼是引用資料型別?它和基本資料型別有什麼區別?
  我們知道JavaScript有Number,Boolean,String,undefined,null這幾種基本資料型別,但是,其實呢在這幾種基本資料型別之外還有幾個引用資料型別,這些引用型別我們一般把它們稱為物件定義,因為他們描述的是一類物件所具有的屬性和方法。(引用型別與類很相似,但是它並不是傳統意義的類,所以本文不用類來稱呼它。)
  基本資料型別和引用資料型別的區別:
   1.基本資料型別是按值訪問的,因為可以直接操作儲存在變數中的實際值。
   2.基本型別的資料是存放在棧記憶體中的,而引用型別的資料是存放在堆記憶體中的。
  我們先說第一點:

//基本資料型別
var a=10;
var b=a;
b=20;
conso.log(a);//10
conso.log(b);//20
//引用資料型別
var obj1=new Object();
obj.name="小明";
var obj2=obj1;
obj2.name="小紅";
console.log(obj.name);//小紅
console.log(obj1.name);//小紅
}

從上面我們可以看出來,基本資料型別只是a和b就只是簡單的賦值關係,b變成什麼值和a沒有半毛錢關係,但是下面的就不一樣,obj2把它的name屬性給改了,obj1的也跟著改,這是因為obj和obj2指向了同一個堆記憶體物件,obj1賦值給onj2,實際上這個堆記憶體物件在棧記憶體的引用地址複製了一份給了obj2,但是實際上他們共同指向了同一個堆記憶體物件。實際上改變的是堆記憶體物件。
基本資料型別記憶體表示類似這種:
在這裡插入圖片描述


引用資料型別記憶體表示類似這種:
在這裡插入圖片描述
說完了這兩種資料型別的區別,下面我們來分別介紹這幾種引用型別。
1.Object型別
Object型別使我們在JavaScript之中用到的最多的型別,雖然它的例項
1.建立Object例項的方式:
第一種:使用new操作符後跟Object建構函式。上面的例子就是用的這種方法。
第二種:使用字面量的方式表示。例如:

var obj1={
name:"小明"
}

他們兩者使用起來是完全一樣的,但是需要知道的是通過物件字面量建立物件時不會呼叫Object建構函式的.
2.訪問物件屬性的方法:
第一種:點表示法。
第二種:方括號表示法。

alert(obj1.name);//點表示法
alert(obj1['name']);//方括號表示法

他們兩者在功能上沒有任何區別,但是方括號有一個優點就是可以通過變數來訪問屬性。
還有就是方括號表示法應該將訪問的屬性以字串的形式放在方括號中。

var myname= 'name';
alert(obj1[myname]); //小明
person['first name'] = '王';

由於’first name’中包含一個空格,所以不能使用點表示法來訪問它。然而,屬性名中時可以包含非字母非數字點,這時候就可以使用方括號來訪問它們,除非必要使用變數來訪問屬性,否則我還是建議使用點表示法,方便,簡單,快捷。

下一篇:JavaScript的引用資料型別-Array型別