《JavaScript高級程序設計》筆記——chapter5 引用類型(Object/Array)

前言
前面在第三章基本概念一節稍微提及了引用類型的概念,在第四章詳細介紹了基本數據類型與引用類型作爲變量時的不同。本章將詳細介紹ECMAScript的原生引用類型。
首先複習下基本類型值與引用類型值的特點:
  • 基本類型值在內存中佔據固定大小的空間,因此被保存在棧內存中
  • 從一個變量向另一個變量複製基本類型的值,會創建這個值的一個副本
  • 引用類型的值是對象,保存在堆內存中;
  • 包含引用類型值的變量確實是在棧內存中,不過它僅僅是一個指向對象的指針而已
  • 從一個變量向另一個變量複製引用類型的值,複製的是指針,因此兩個變量最終指向同一個對象
  • 確定一個值是哪種基本類型可以用 typeof 操作符,而確定一個值是哪種引用類型可以使用 instanceof 操作符




引用類型的值(即對象)是某個特定引用類型的一個實例
引用類型有時也被成爲對象定義,因爲它們描述的是一類對象所具有的屬性和方法。


5.1 Object類型

創建Object實例的方式:

  • 使用new 操作符後面跟 Object構造函數:
var person = new Object();  //person是一個對象,即Object類型的實例
person.name = "Jack";       //name是person的屬性
person.age = 26;

  • 使用對象字面量表示法(注意標點)
var person = {
    name : "Jack",   //此處是逗號
    age : 26        //最後一個屬性後面沒有符號
};                 //定義完需要引號結尾

☞對象字面量法要求的代碼量少,而且能給人封裝數據的感覺。實際上,對象字面量也是向函數傳遞大量可選參數的首選方式。


訪問對象屬性的方式:

  • 點表示法   
  • 方括號表示法

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

var propertyName = "name";  //把屬性"name"賦值給一個變量
alert(person[propertyName]); //方括號法還可以通過此變量來訪問屬性

//當屬性名中包含會導致語法錯誤的字符,或者屬性名使用的是關鍵字或保留字,也可以使用方括號法
person["first name"] = "Jack";  //此例中,"first name"中有空格,不能用點表示法來訪問  person.first name 是錯誤的
注:除非必須使用變量來訪問屬性,否則建議使用點表示法。



5.2  Array 類型

特點:
  • 和其他語言的數組一樣,都是數據的有序列表
  • 不同的是,ECMAScript數組的每一項可以保存任何類型的數據。(解釋:第一項是String,第二項可以是Number,第三項又可以是對象。。。。)
  • ECMAScript數組的大小可以動態調整,即隨着數據的添加自動增長以容納新增數據。

創建方法:
  • 使用Array構造函數
    • 空數組    var  Obj = new Array();
    • 指定長度的數組    var Obj = new Array(size);
    • 指定元素的數組    var Obj = new Array( element0, element1, ..., elementn)
  • 使用數組字面量表示法
    • 單維數組    var Obj = [ element0, element1, ..., elementn];
    • 多維數組    var Obj = [[數組序列1], [數組序列2], ....... , [數組序列n]];



基本操作:


數組屬性:
  • constructor : 引用數組對象的構造函數
  • length : 返回數值的長度(具體看P87)
  • property : 通過增加屬性和方法擴展數組的定義


數組方法:














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章