javascript 面向?qū)ο缶幊?聊聊對象的事
JSON是一種鍵/值對方式來描述內(nèi)部成員的格式,其內(nèi)部成員可以是幾乎任何一種類型的對象,當(dāng)然也可以是方法、類、數(shù)組,也可以是另外一個JSON對象。
var student = { Name: "張三",Age: 20,
Hobby: "讀書",Books: [
{ BookName : "C#" ,Price : 70
},
{ BookName : "Java" ,Price : 70
},
{ BookName : "Javascript" ,Price : 80
}
]
};
上面代碼用JSON對象描述了一個學(xué)生的信息,他有姓名、年齡、愛好、書集等。在訪問該學(xué)生對象時,可以通過student變量來操作學(xué)生的信息。
var stuInfo = "姓名:" + student.Name +
",年齡:" + student.Age + ",愛好:" + student.Hobby + ",擁有的書:" + student.Books[0].BookName + "、" + student.Books[1].BookName + "、" +student.Books[2].BookName;
alert(stuInfo);
這樣的操作方式風(fēng)格和C#也非常相像。以上的代碼是靜態(tài)的構(gòu)造出了學(xué)生對象,學(xué)生對象的結(jié)構(gòu)就確定了。在其它的編程語言中一般對象結(jié)構(gòu)一旦確定就不能很方便的進行修改,但是在javascript中的對象結(jié)構(gòu)也可以方便的進行改動。下面為student對象添加一個Introduce方法來做自我介紹。
student.Introduce = function() {var stuInfo = "姓名:" + this.Name +
",年齡:" + this.Age +
",愛好:" + this.Hobby +
",擁有的書:" +this.Books[0].BookName + "、" +
this.Books[1].BookName + "、" +
this.Books[2].BookName;alert(stuInfo)
};
student.Introduce();
student對象原來并沒有Introduce方法,第一次為student.Introduce賦值會在student對象中創(chuàng)建一個新的成員,后面如果再為student.Introduce賦值則會覆蓋上一次所賦的值。當(dāng)然我們這的值是一個function。也可以用類似索引的方式來添加成員。
student["Introduce"] = function() {
……
};
student.Introduce();
當(dāng)然添加的成員也可以刪除掉。刪除掉之后則成為undefined,再訪問該成員時則不支持。
delete student.Introduce;
student.Introduce();
javascript是弱類型的語言,有的時候即使有IDE的輔助也不能很清楚知道當(dāng)前所操作對象的成員,可能會需要對當(dāng)前對象的屬性進行查詢,這時候我們可以使用for循環(huán)來完成。
for (var key in student) {
document.write(key + " : " + student[key] + "<br />");
};
對student對象進行遍歷時,是對student的成員進行遍歷,這里的key則對應(yīng)student對象中的每一個成員屬性名稱。student[key]則是對student某個成員進行訪問。如果想調(diào)用student的Introduce方法也可以用索引的方式,student[“Introduce”]()。
上面簡單的聊了聊JSON對象,總的來說JSON是很方便的數(shù)據(jù)打包方式。javascript中的其它的對象,不論是瀏覽器對象,還是自定義類型所創(chuàng)建的對象或者是數(shù)組等等,它們也都具有JSON對象類似的操作方式。我們可以直接用索引的方式為window添加成員,我們也可以為數(shù)組添加字符串形式的下標(biāo)把它當(dāng)成Hashtable來操作。
window["Hi"] = function() {
alert("helloworld!");};
window["Hi"](); var array = [];array["一"] = "A";
array["二"] = "B";
array["三"] = "C";
array["四"] = "D";
alert(array["一"] + array["二"] + array["三"] + array["四"]);
把數(shù)組當(dāng)成Hashtable來操作時,要注意,并非是為數(shù)組添加數(shù)組元素,而是在數(shù)組對象中添加新的屬性成員。而且如果for(var key in array)循環(huán)遍歷數(shù)組對象的話,key得到的卻不是array對象的屬性名稱,而是數(shù)組元素的索引號。
下一次聊聊function。
相關(guān)文章
JavaScript中使用構(gòu)造函數(shù)實現(xiàn)繼承的代碼
JavaScript中借用構(gòu)造函數(shù)實現(xiàn)繼承的代碼,需要的朋友可以參考下。2010-08-08
討論javascript(一)工廠方式 js面象對象的定義方法
看《javascript高級程序設(shè)計》有感2009-12-12
JavaScript 基于原型的對象(創(chuàng)建、調(diào)用)
在我們寫js代碼的時候,內(nèi)部對象是不可避免的要引用,但是光靠這些對象是不夠的,所以需要我們自己定義對象,這個時候通常用到的對象是第三種,即基于原型的對象,下面就如何創(chuàng)建自己的對象,定義對象的方法、屬性,調(diào)用對象給出詳細的說明。2009-10-10
js 面向?qū)ο蟮募夹g(shù)創(chuàng)建高級 Web 應(yīng)用程序
在 C++ 或 C# 中,在談?wù)搶ο髸r,是指類或結(jié)構(gòu)的實例。對象有不同的屬性和方法,具體取決于將它們實例化的模板(即類)。2010-02-02



