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