JavaScript,很少能讓人想到它面向?qū)ο蟮奶匦?,甚至有人說它不是面向?qū)ο蟮恼Z言,因?yàn)樗鼪]有類。沒錯, JavaScript 真的沒有類,但 JavaScript 是面向?qū)ο蟮恼Z言。 JavaScript 只有對象,對象就是對象,不是類的實(shí)例。
因?yàn)榻^大多數(shù)面向?qū)ο笳Z言中的對象都是基于類的,所以經(jīng)常有人混淆類的實(shí)例與對象的概念。對象就是類的實(shí)例,這在大多數(shù)語言中都沒錯,但在 JavaScript 中卻不適用。JavaScript 中的對象是基于原型的。
創(chuàng)建和訪問
JavaScript 中的對象實(shí)際上就是一個由屬性組成的關(guān)聯(lián)數(shù)組,屬性由名稱和值組成,值的類型可以是任何數(shù)據(jù)類型,或者函數(shù)和其他對象。注意 JavaScript 具有函數(shù)式編程的特性,所以函數(shù)也是一種變量,大多數(shù)時候不用與一般的數(shù)據(jù)類型區(qū)分。
在 JavaScript 中,你可以用以下方法創(chuàng)建一個簡單的對象:
var foo = {};
foo.prop_1 = 'bar';
foo.prop_2 = false;
foo.prop_3 = function() {
return 'hello world';
}
console.log(foo.prop_3());
以上代碼中,我們通過 var foo = {}; 創(chuàng)建了一個對象,并將其引用賦值給 foo, 通過 foo.prop1 來獲取它的成員并賦值,其中 {} 是對象字面量的表示方法,也可以用 var foo = new Object() 來顯式地創(chuàng)建一個對象。
1. 使用關(guān)聯(lián)數(shù)組訪問對象成員
我們還可以用關(guān)聯(lián)數(shù)組的模式來創(chuàng)建對象,以上代碼修改為:
var foo = {};
foo['prop1'] = 'bar';
foo['prop2'] = false;
foo['prop3'] = function() {
return 'hello world';
}
在 JavaScript 中,使用句點(diǎn)運(yùn)算符和關(guān)聯(lián)數(shù)組引用是等價的,也就是說任何對象(包括 this 指針)都可以使用這兩種模式。使用關(guān)聯(lián)數(shù)組的好處是,在我們不知道對象的屬性名稱的時候,可以用變量來作為關(guān)聯(lián)數(shù)組的索引。例如:
var some_prop = 'prop2';
foo[some_prop] = false;
2.使用對象初始化器創(chuàng)建對象
上述的方法只是讓你對JavaScript對象的定義有個了解,真正在使用的時候,我們會采用下面這種更加緊湊明了的方法:
var foo = {
'prop1': 'bar',
prop2: 'false',
prop3: function (){
return 'hello world';
}
};
這種定義的方法稱為對象的初始化器。注意,使用初始化器時,對象屬性名稱是否加引號是可選的,除非屬性名稱中有空格或者其他可能造成歧義的字符,否則沒有必要使用引號。
以上就是javascript創(chuàng)建和訪問對象的實(shí)現(xiàn)方法,希望對大家的學(xué)習(xí)有所幫助。