欧美亚洲大片-国产免费成人在线视频-国产成人8x人在线视频软件-日韩亚洲欧美中文字幕-97伦伦午夜电影理伦片-亚洲综合精品视频-曰本女人牲交高潮视频-久久久精品欧美-天天干天天操天天碰-精品国产乱码久久久久久1区2区-黄色一级免费片-在线免费欧美-国产成人精品在线视频-精人妻一区二区三区-香蕉视频2020-综合久久99-欧美日韩亚洲国产综合

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

百恒網(wǎng)絡

南昌百恒網(wǎng)絡

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

百恒網(wǎng)絡 2012-03-02 6053

引用類型的值(對象)是引用類型的一個實例。在ECMAScript中,引用類型是一種數(shù)據(jù)結構,用于將數(shù)據(jù)和功能組織在一起。它也常被稱為類,但這種稱呼并不妥當。盡管ECMAScript從技術上講是一門面向對象的語言,但它不具備傳統(tǒng)的面向對象語言所支持的類和接口等基本結構。引用類型有時候也被稱為對象定義,因為它們描述的是一類對象所具有的屬性和方法。

雖然引用類型與類看起來相似,但它們并不是相同的概念。為避免混淆,本書將不使用類這個概念。

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

var person=new Object();

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

1. 0bject類型

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

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

var person=new Object();

person.name= "Nicholas";

person.age=29;

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

var person={

name: "Nicholas",

age:29

};

在這個例子中,左邊的花括號({)表示對象字面量的開始,因為它出現(xiàn)在了賦值操作符的后面一在其他環(huán)境中,左花括號表示的是語句塊的開始)。然后,我們定義了name屬性,之后是一個冒號,再后面是這個屬性的值。在對象字面量中,使用逗號來分隔不同的屬性,因此"Nicholas"后面是一個逗號。但是,在age屬性的值29的后面不能添加逗號,因為age是這個對象的最后一個屬性。在最后一個屬性后面添加逗號,會在IE及Opera中導致錯誤。

在使用對象字面量語法時,屬性名也可以使用字符串,如下面這個例子所示:

var person={

"name" : "BaiHeng",

"Website" : "jxbh.cn"};

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

另外,使用對象字面量語法時,如果留空其花括號,則可以定義只包含默認屬性和方法的對象,如下所示:

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

person.name="BaiHen";

person.Websit="jxbh.cn";

這個例子與本節(jié)前面的例子是等價的,只不過看起來似乎有點奇怪。關于對象字面量語法,南昌網(wǎng)站建設公司百恒網(wǎng)絡工程師推薦只在考慮對象屬性名的可讀性時使用。

在通過對象字面量定義對象時,實際上不會調用Object構造函數(shù)(Firefox除外)。

雖然可以使用前面介紹的任何一種方法來定義對象,但南昌建網(wǎng)站公司前端開發(fā)人員更青睞對象字面量語法,因為這種語法要求的代碼量少,而且能夠給人封裝數(shù)據(jù)的感覺。實際上,對象字面量也是向函數(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"

});

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

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

一般來說,訪問對象屬性時使用的都是點表示法,這也是很多面向對象語言中通用的語法。不過,在JavaScript也可以使用方括號表示法來訪問對象的屬性。在使用方括號語法時,應該將要訪問的屬性以字符串的形式放在方括號中,如下面的例子所示:

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

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

從功能上看,這兩種訪問對象屬性的方法沒有任何區(qū)別。但方括號語法的主要優(yōu)點是可以通過變量來訪問屬性,例如:

var propertyName= "name";

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

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


400-680-9298,0791-88117053
掃一掃關注百恒網(wǎng)絡微信公眾號
掃一掃打開百恒網(wǎng)絡小程序

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
信阳市| 喀什市| 福清市| 青川县| 阳曲县| 阜南县| 明光市| 商南县| 武平县| 西吉县| 岑溪市| 黎城县| 宁远县| 汶川县| 清河县| 壤塘县| 阿荣旗| 雅安市| 疏勒县| 汨罗市| 弋阳县| 三都| 乐昌市| 海南省| 泰宁县| 长岭县| 昆明市| 平遥县| 杭州市| 奉化市| 金寨县| 涞水县| 丽水市| 石林| 斗六市| 唐山市| 福清市| 炎陵县| 林芝县| 湘西| 洛宁县|