javascript 高級程序設計(三)

第 5 章 引 用 類 型
引用類型是一種數據結構,引用類型有時候也被稱爲對象定義,因爲它們描述的是一類對象所具有的屬性和方法。
5.1 Object 類型
創建 Object 實例的方式有兩種。第一種是使用 new 操作符後跟 Object 構造函數,如下所示:

var person = new Object();
person.name = "Nicholas";
person.age = 29; 

另一種方式是使用對象字面量表示法。
在 age 屬性的值 29 的後面不能添加逗號,會在 IE7 及更早版本和Opera 中導致錯誤。

var person = {
 name : "Nicholas",
 age : 29
}; 

在使用對象字面量語法時,屬性名也可以使用字符串,如下面這個例子所示:
這裏的數值屬性名會自動轉換爲字符串。

var person = {
 "name" : "Nicholas",
 "age" : 29,
 5 : true
}; 

使用對象字面量語法時,如果留空其花括號,則可以定義只包含默認屬性和方法的對象,如下所示:

var person = {}; //與 new Object()相同
person.name = "Nicholas";
person.age = 29; 

對象字面量也是向函數傳遞大量可選參數的首選方式,例如:

function displayInfo(args) {
				var output = "";
				if(typeof args.name == "string") {
					output += "Name: " + args.name + "\n";
				}
				if(typeof args.age == "number") {
					output += "Age: " + args.age + "\n";
				}
				alert(output);
			}
			displayInfo({
				name: "Nicholas",
				age: 29
			});
			displayInfo({
				name: "Greg"
			});

在 JavaScript 也可以使用方括號表示法來訪問對象的屬性。在使用方括號語法時,應該將要訪問的屬性以字符串的形式放在方括號中,如下面的例子所示。

alert(person["name"]); //"Nicholas"
alert(person.name); //"Nicholas" 

方括號語法的主要優點是可以通過變量來訪問屬性,例如:

var propertyName = "name";
alert(person[propertyName]); //"Nicholas" 

屬性名中包含會導致語法錯誤的字符,或者屬性名使用的是關鍵字或保留字,也可以使用方括號表示法。例如:

person["first name"] = "Nicholas"; 

屬性名中是可以包含非字母非數字的,這時候就可以使用方括號表示法來訪問它們。通常,除非必須使用變量來訪問屬性,否則我們建議使用點表示法。

5.2 Array 類型
創建數組的基本方式有兩種。第一種是使用 Array 構造函數

var colors = new Array(); 

給構造函數傳遞該數量,而該數量會自動變成 length屬性的值。

var colors = new Array(20); 

也可以向 Array 構造函數傳遞數組中應該包含的項。以下代碼創建了一個包含 3 個字符串值的數組:

var colors = new Array("red", "blue", "green"); 

給構造函數傳遞一個值也可以創建數組,因爲如果傳遞的是數
值,則會按照該數值創建包含給定項數的數組;而如果傳遞的是其他類型的參數,則會創建包含那個值的只有一項的數組。

var colors = new Array(3); // 創建一個包含 3 項的數組
var names = new Array("Greg"); // 創建一個包含 1 項,即字符串"Greg"的數組

注:在使用 Array 構造函數時也可以省略 new 操作符

創建數組的第二種基本方式是使用數組字面量表示法。

var colors = ["red", "blue", "green"]; // 創建一個包含 3 個字符串的數組
var names = []; // 創建一個空數組
var values = [1,2,]; // 不要這樣!這樣會創建一個包含 2 或 3 項的數組
var options = [,,,,,]; // 不要這樣!這樣會創建一個包含 5 或 6 項的數組

在讀取和設置數組的值時,要使用方括號並提供相應值的基於 0 的數字索引

var colors = ["red", "blue", "green"]; // 定義一個字符串數組
alert(colors[0]); // 顯示第一項
colors[2] = "black"; // 修改第三項
colors[3] = "brown"; // 新增第四項

數組的項數保存在其 length 屬性中,這個屬性始終會返回 0 或更大的值
在這裏插入圖片描述
數組的 length 屬性很有特點——它不是隻讀的。因此,通過設置這個屬性,可以從數組的末尾移除項或向數組中添加新項。
在這裏插入圖片描述

這個例子中的數組 colors 一開始有 3 個值。將其 length 屬性設置爲 2 會移除最後一項(位置爲2 的那一項),結果再訪問
colors[2]就會顯示 undefined 了。

如果將其 length 屬性設置爲大於數組項數的值,則新增的每一項都會取得 undefined 值,如下所示:
在這裏插入圖片描述

在此,雖然 colors 數組包含 3 個項,但把它的 length 屬性設置成了 4。這個數組不存在位置 3,所以訪問這個位置的值就得到了特殊值 undefined。

利用 length 屬性也可以方便地在數組末尾添加新項,如下所示:
在這裏插入圖片描述

5.2.1 檢測數組

5.2.2 轉換方法
所有對象都具有 toLocaleString()、toString()和 valueOf()方法

var colors = ["red", "blue", "green"]; // 創建一個包含 3 個字符串的數組
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green

數組繼承的 toLocaleString()、toString()和 valueOf()方法,在默認情況下都會以逗號分隔的字符串的形式返回數組項。
join()方法只接收一個參數,即用作分隔符的字符串,然後返回包含所有數組項的字符串。

法只接收一個參數,即用作分隔符的字符串,然後返回包含所有數組項的字符串。請看下面的例子:
var colors = ["red", "green", "blue"];
alert(colors.join(",")); //red,green,blue
alert(colors.join("||")); //red||green||blue 

5.2.3 棧方法

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