最近中文字幕大全|熟女少妇精品一区二区|国产网红主播精品一区|日本一区二区精品理论电影|欧洲少妇无码精品视频在线|久久国产精品永久免费网站|人妻无码久久一区二区免费麻豆|国产日韩欧美一区二区在线高清

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開(kāi)發(fā)_APP開(kāi)發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
小程序
tel-icon全國(guó)服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開(kāi)百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

ECMAScript引用類型概念及0bject類型

百恒網(wǎng)絡(luò) 2012-03-02 5400

引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例。在ECMAScript中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起。它也常被稱為類,但這種稱呼并不妥當(dāng)。盡管ECMAScript從技術(shù)上講是一門面向?qū)ο蟮恼Z(yǔ)言,但它不具備傳統(tǒng)的面向?qū)ο笳Z(yǔ)言所支持的類和接口等基本結(jié)構(gòu)。引用類型有時(shí)候也被稱為對(duì)象定義,因?yàn)樗鼈兠枋龅氖且活悓?duì)象所具有的屬性和方法。

雖然引用類型與類看起來(lái)相似,但它們并不是相同的概念。為避免混淆,本書(shū)將不使用類這個(gè)概念。

如前所述,對(duì)象是某個(gè)特定引用類型的實(shí)例。新對(duì)象是使用new操作符后跟一個(gè)構(gòu)造函數(shù)來(lái)創(chuàng)建的。構(gòu)造函數(shù)本身就是一個(gè)函數(shù),只不過(guò)該函數(shù)是出于創(chuàng)建新對(duì)象的目的而定義的。請(qǐng)看下面這行代碼:

var person=new Object();

這行代碼創(chuàng)建了Object引用類型的一個(gè)新實(shí)例,然后把該實(shí)例保存在了變量person中。使用的構(gòu)造函數(shù)是Object,它只為新對(duì)象定義了默認(rèn)的屬性和方法。ECMAScript提供了很多原生引用類型(例如Object),以便開(kāi)發(fā)人員用以實(shí)現(xiàn)常見(jiàn)的計(jì)算任務(wù)。

1. 0bject類型

南昌做網(wǎng)站公司工程理理師提示,到目前為止,我們看到的大多數(shù)引用類型值都是Object類型的實(shí)例;而旦,Object也是ECMAScript中使用最多的一個(gè)類型。雖然Object的實(shí)例不具備多少功能,但對(duì)于在應(yīng)用程序中存儲(chǔ)和傳輸數(shù)據(jù)而言,它們確實(shí)是非常理想的選擇。

創(chuàng)建Object實(shí)例的方式有兩種。第一種是使用new操作符后跟Object構(gòu)造函數(shù),如下所示:

var person=new Object();

person.name= "Nicholas";

person.age=29;

另一種方式是使用對(duì)象字面量表示法。對(duì)象字面量是對(duì)象定義的一種簡(jiǎn)寫(xiě)形式,目的在于簡(jiǎn)化創(chuàng)建包含大量屬性的對(duì)象的過(guò)程。下面這個(gè)例子就使用了對(duì)象字面量語(yǔ)法定義了與前面那個(gè)例子中相同的person對(duì)象:

var person={

name: "Nicholas",

age:29

};

在這個(gè)例子中,左邊的花括號(hào)({)表示對(duì)象字面量的開(kāi)始,因?yàn)樗霈F(xiàn)在了賦值操作符的后面一在其他環(huán)境中,左花括號(hào)表示的是語(yǔ)句塊的開(kāi)始)。然后,我們定義了name屬性,之后是一個(gè)冒號(hào),再后面是這個(gè)屬性的值。在對(duì)象字面量中,使用逗號(hào)來(lái)分隔不同的屬性,因此"Nicholas"后面是一個(gè)逗號(hào)。但是,在age屬性的值29的后面不能添加逗號(hào),因?yàn)閍ge是這個(gè)對(duì)象的最后一個(gè)屬性。在最后一個(gè)屬性后面添加逗號(hào),會(huì)在IE及Opera中導(dǎo)致錯(cuò)誤。

在使用對(duì)象字面量語(yǔ)法時(shí),屬性名也可以使用字符串,如下面這個(gè)例子所示:

var person={

"name" : "BaiHeng",

"Website" : "jxbh.cn"};

以上代碼也會(huì)得到與前面例子相同的結(jié)果:創(chuàng)建一個(gè)帶有name和Website屬性的新對(duì)象。

另外,使用對(duì)象字面量語(yǔ)法時(shí),如果留空其花括號(hào),則可以定義只包含默認(rèn)屬性和方法的對(duì)象,如下所示:

var person ={}; //new Object()相同

person.name="BaiHen";

person.Websit="jxbh.cn";

這個(gè)例子與本節(jié)前面的例子是等價(jià)的,只不過(guò)看起來(lái)似乎有點(diǎn)奇怪。關(guān)于對(duì)象字面量語(yǔ)法,南昌網(wǎng)站建設(shè)公司百恒網(wǎng)絡(luò)工程師推薦只在考慮對(duì)象屬性名的可讀性時(shí)使用。

在通過(guò)對(duì)象字面量定義對(duì)象時(shí),實(shí)際上不會(huì)調(diào)用Object構(gòu)造函數(shù)(Firefox除外)。

雖然可以使用前面介紹的任何一種方法來(lái)定義對(duì)象,但南昌建網(wǎng)站公司前端開(kāi)發(fā)人員更青睞對(duì)象字面量語(yǔ)法,因?yàn)檫@種語(yǔ)法要求的代碼量少,而且能夠給人封裝數(shù)據(jù)的感覺(jué)。實(shí)際上,對(duì)象字面量也是向函數(shù)傳遞大量可選參數(shù)的首選方式,例如:

function displaylnfo (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);

}

displaylnfo((

name: "Nicholas",

age: 29

));

displaylnfo({

name: "Greg"

});

在這個(gè)例子中,函數(shù)displaylnfo()接受一個(gè)名為args的參數(shù)。這個(gè)參數(shù)可能帶有一個(gè)名為name或age的屬性,也可能這兩個(gè)屬性都有或者都沒(méi)有。在這個(gè)函數(shù)內(nèi)部,我們通過(guò)typeof操作符來(lái)檢測(cè)每個(gè)屬性是否存在,然后再基于相應(yīng)的屬性來(lái)構(gòu)建一條要顯示的消息。然后,我們調(diào)用了兩次這個(gè)函數(shù),每次都使用一個(gè)對(duì)象字面量來(lái)指定不同的數(shù)據(jù)。這兩次調(diào)用傳遞的參數(shù)雖然不同,但函數(shù)都能正常執(zhí)行。

這種傳遞參數(shù)的模式最適合需要向函數(shù)傳入大量可選參數(shù)的情形。一般來(lái)講,命名參數(shù)雖然容易處理,但在有多個(gè)可選參數(shù)的情況下就會(huì)顯示不夠靈活。南昌網(wǎng)頁(yè)設(shè)計(jì)公司工程師推薦最好的做法是對(duì)那些必需值使用命名參數(shù),而使用對(duì)象字面量來(lái)封裝多個(gè)可選參數(shù)。

一般來(lái)說(shuō),訪問(wèn)對(duì)象屬性時(shí)使用的都是點(diǎn)表示法,這也是很多面向?qū)ο笳Z(yǔ)言中通用的語(yǔ)法。不過(guò),在JavaScript也可以使用方括號(hào)表示法來(lái)訪問(wèn)對(duì)象的屬性。在使用方括號(hào)語(yǔ)法時(shí),應(yīng)該將要訪問(wèn)的屬性以字符串的形式放在方括號(hào)中,如下面的例子所示:

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

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

從功能上看,這兩種訪問(wèn)對(duì)象屬性的方法沒(méi)有任何區(qū)別。但方括號(hào)語(yǔ)法的主要優(yōu)點(diǎn)是可以通過(guò)變量來(lái)訪問(wèn)屬性,例如:

var propertyName= "name";

alert(person[propertyName]); //¨Nicholas"

南昌網(wǎng)站制作工程師提示,通常,除非必須使用變量來(lái)訪問(wèn)屬性,否則我們建議使用點(diǎn)表示法。


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開(kāi)百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×