JavaScript中的對(duì)象是一種數(shù)據(jù)類(lèi)型,由名稱(chēng)和值的集合組成,以名稱(chēng):值對(duì)表示。
name:value對(duì)可以包含可以包含任何數(shù)據(jù)類(lèi)型的屬性(包括字符串,數(shù)字和布爾值)以及方法,這些方法是對(duì)象中包含的函數(shù)。
JavaScript中的對(duì)象是獨(dú)立的實(shí)體,可以與現(xiàn)實(shí)生活中的對(duì)象進(jìn)行比對(duì)。
例如,汽車(chē)具有名稱(chēng)和顏色等屬性以及諸如start(啟動(dòng))和stop(停止)之類(lèi)的方法的對(duì)象:
對(duì)象 | 屬性 | 方法 |
---|---|---|
![]() | car.name =天蝎座 car.model = 600 car.color =紅色 car.horsePower = 103KW | car.start() car.drive() car.brake() car.stop() |
所有汽車(chē)都具有相同的屬性,但是每個(gè)汽車(chē)的屬性值都不同。
所有汽車(chē)都有相同的方法,但是這些方法可以具有不同的功能。
對(duì)象是JavaScript數(shù)據(jù)類(lèi)型,就像數(shù)字或字符串也是數(shù)據(jù)類(lèi)型一樣。作為數(shù)據(jù)類(lèi)型,對(duì)象可以包含在變量中。
使用JavaScript構(gòu)造對(duì)象有多種方法:
使用對(duì)象常量,它使用大括號(hào):{}
使用對(duì)象構(gòu)造函數(shù),它使用new Object()
或者,您可以先創(chuàng)建一個(gè)構(gòu)造函數(shù),然后示例化一個(gè)調(diào)用該函數(shù)的對(duì)象
在此示例中,我們將使用 對(duì)象字面量(object literal)。什么是字面量?用來(lái)為變量賦值時(shí)的常數(shù)量稱(chēng)為字面量
var user = {firstName:"Vishal", lastName:"Choudhary", age:22, location:"New Delhi"};測(cè)試看看?/?
一個(gè)對(duì)象定義可以跨越多行。
var user = { firstName: "Vishal", lastName: "Choudhary", age: 22, location: "New Delhi" };測(cè)試看看?/?
在本教程的后面,我們將討論對(duì)象構(gòu)造函數(shù)和構(gòu)造函數(shù)。
屬性是對(duì)象中名稱(chēng)和值之間的關(guān)聯(lián),并且可以包含任何數(shù)據(jù)類(lèi)型。
屬性通常是指對(duì)象的特征。
屬性 | 屬性值 |
---|---|
firstName | 維沙爾 |
lastName | 喬達(dá)里 |
age | 22 |
location | 新德里 |
有兩種訪(fǎng)問(wèn)對(duì)象屬性的方法:
點(diǎn)表示法: .
括號(hào)符號(hào): []
讓我們重新訪(fǎng)問(wèn)原始示例對(duì)象user。
user.firstName;測(cè)試看看?/?
user["firstName"];測(cè)試看看?/?
點(diǎn)號(hào)和括號(hào)都經(jīng)常使用。但是,點(diǎn)表示法更快,更易讀。
方法是作為對(duì)象屬性值的函數(shù),因此是對(duì)象可以執(zhí)行的任務(wù)。
方法存儲(chǔ)在屬性中作為函數(shù)定義。
屬性 | 屬性值 |
---|---|
firstName | 維沙爾 |
lastName | 喬達(dá)里 |
age | 22 |
location | 新德里 |
getName | function() {return this.firstName + " " + this.lastName;} |
var user = { firstName: "Vishal", lastName : "Choudhary", age : 22, location : "New Delhi", getName : function() { return this.firstName + " " + this.lastName; } };
注意:方法是作為屬性存儲(chǔ)的函數(shù)。
為了檢索一個(gè)對(duì)象方法,您可以像調(diào)用常規(guī)函數(shù)一樣調(diào)用它,只是將其附加到對(duì)象變量上。
user.getName();測(cè)試看看?/?
如果訪(fǎng)問(wèn)不帶()括號(hào)的方法,它將返回函數(shù)定義:
user.getName;測(cè)試看看?/?
您可能已經(jīng)注意到我們的方法有些奇怪。以這個(gè)為例:
getName: function() { return this.firstName + " " + this.lastName; }
this關(guān)鍵字是指代碼被寫(xiě)入內(nèi)部當(dāng)前對(duì)象-所以在這種情況下,this等同于user。
換句話(huà)說(shuō),this.firstName表示此對(duì)象的firstName屬性。
您可以在JS this教程JS this關(guān)鍵字了解有關(guān)該關(guān)鍵字的更多信息。
當(dāng)您瀏覽這些示例時(shí),您可能一直在思考所使用的點(diǎn)符號(hào)非常熟悉。那是因?yàn)槟谡麄€(gè)教程中一直在使用它。
每次我們遍歷使用內(nèi)置JavaScript對(duì)象的示例時(shí)。
當(dāng)您使用以下行訪(fǎng)問(wèn)文檔對(duì)象模型時(shí):
document.write("Hello world"); document.getElementById("para");
您正在使用Document類(lèi)示例上可用的方法。對(duì)于每個(gè)加載的網(wǎng)頁(yè),都會(huì)創(chuàng)建一個(gè)Document示例,稱(chēng)為document,它代表整個(gè)頁(yè)面的結(jié)構(gòu),內(nèi)容和其他功能,例如URL。同樣,這意味著它具有幾種可用的常用方法/屬性。
當(dāng)使用關(guān)鍵字聲明JavaScript變量時(shí)new,該變量將作為對(duì)象創(chuàng)建:
var a = new Number(); // 將a聲明為Number對(duì)象 var b = new String(); // 將b聲明為String對(duì)象 var c = new Boolean(); // 將c聲明為Boolean對(duì)象
避免使用String,Number和Boolean對(duì)象。它們會(huì)使您的代碼復(fù)雜化,并降低執(zhí)行速度。
您將在本教程的后面部分了解有關(guān)對(duì)象的更多信息。