javascript中創(chuàng)建對象的模式匯總_javascript技巧

javascript中創(chuàng)建對象的模式匯總_javascript技巧

ID:30775935

大小:196.76 KB

頁數(shù):10頁

時間:2019-01-03

javascript中創(chuàng)建對象的模式匯總_javascript技巧_第1頁
javascript中創(chuàng)建對象的模式匯總_javascript技巧_第2頁
javascript中創(chuàng)建對象的模式匯總_javascript技巧_第3頁
javascript中創(chuàng)建對象的模式匯總_javascript技巧_第4頁
javascript中創(chuàng)建對象的模式匯總_javascript技巧_第5頁
資源描述:

《javascript中創(chuàng)建對象的模式匯總_javascript技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、JavaScript中創(chuàng)建對象的模式匯總JavaScript中創(chuàng)建對象的模式匯總**JavaScript創(chuàng)建對象模式:對象字面量工廠模式構(gòu)造函數(shù)模式原型模式結(jié)合構(gòu)造函數(shù)和原型模式原型動態(tài)模式**面向?qū)ο蟮恼Z言大都有一個類的概念,通過類可以創(chuàng)建多個具右相同方法和屬性的對象。雖然從技術(shù)上講,javascript是一門面向?qū)ο蟮恼Z言,但是javascript沒有類的概念,一切都是對象。任意一個對象都是某種引用類型的實例,都是通過己有的引用類型創(chuàng)建;引用類型可以是原生的,也可以是自定義的。1、對象字面量varperson={name:'Nicholas

2、';age:'22';job:〃softwareEngineer,zsayName:function(){alter(this,name);}}例子中創(chuàng)建一個名為person的對彖,并為它添加了三個屬性(name,age,job)和一個方法(sayNameO),其中,sayName()方法用于顯示this.name(被解析為person.name)的值。對象字面量可以用來創(chuàng)建單個對象,但這個方法有個明顯的缺點:使用同一個接口創(chuàng)建很多對象,會產(chǎn)生大量重復(fù)的代碼。2、工廠模式工廠模式是軟件工程領(lǐng)域中一種廣為人知的設(shè)計模式,工廠模式抽象了創(chuàng)建具體對象

3、的過程,用函數(shù)來封裝以特定的接口創(chuàng)建對象的細(xì)節(jié)。functioncreatePerson(name,age,job){varo=newobject{};o.name=name;o.age=age;o.job二job;o.sayNamc=function(){alert(this,name);};returno;}varpcrsonl=crcatPcrson(〃Nicholas",22,〃softwareEnginecr〃);varperson2=creatPerson(z,Gregz,,24,"student");函數(shù)creatPerson{}

4、能夠根據(jù)接受的參數(shù)構(gòu)建一個包含所有必要信息的Person對象??梢詿o數(shù)次的調(diào)用這個函數(shù),每次都會返回一個包含三個屬性一個方法的對象。工廠模型雖然解決了創(chuàng)建多個相似對象的問題,卻沒有解決對象識別的問題(即怎么知道一個對象的類型)。3、構(gòu)造函數(shù)模式functionPerson(name,age,job){this.name=name;this,age=age;this,job二job;this.sayName=function(){alert(this,name);//通過new操作符創(chuàng)建Person的實例varpersonl=newPerson(

5、"Nicholas",22,"softwareEngineer/z);varperson2=newPerson(24,〃student〃);personl.sayName();//Nicholasperson2.sayName();//Greg與工廠模式不同的是沒有顯示的創(chuàng)建對象直接將屬性和方法賦給了this對象沒有return語句創(chuàng)建Person的新實例,必須使用new操作符。調(diào)用構(gòu)造函數(shù)的4個步驟:創(chuàng)建一個新對象將構(gòu)造函數(shù)的作用域賦給新對彖(this指向了這個新對彖)執(zhí)行構(gòu)造函數(shù)屮的代碼返冋新對象這個例了中創(chuàng)建的所有對象既是Object的實

6、例,也是Person實例??梢酝ㄟ^instanceof操作符驗證。alert(personlinstanceofObject);//true構(gòu)造函數(shù)模式也有自C的問題,實際上,sayName方法在每個實例上都會被重新創(chuàng)建一次,需要注意的是,通過實例化創(chuàng)建的方法并不相等,以下代碼可以證明alert(personl.sayName==person2.sayName);//false可以將方法移到構(gòu)造器的外部作為全局函數(shù)來解決這個問題。functionPerson(name,age,job){this.name=name;this.age二age;t

7、his.job二job;}functionsayName(){alert(this.name);}在全局下創(chuàng)建的全局函數(shù)實際上只能被經(jīng)出Person創(chuàng)建的實例調(diào)用,這就冇點名不副實了;如果對象需要定義很對方法,那么就要定義很多個全局函數(shù),缺少封裝性。4、原型模式JavaScript中創(chuàng)建的每個函數(shù)都有一個prototype(原型)屬性,它是一個指針,指向一個對象,包含了可以rfl特定類型的所有實例共享的屬性和方法(讓所有的對象實例共享它的屬性和方法)functionPerson(){}Person.prototype?name二"Nichola

8、s";Person,prototype.age=22;Person.prototype,job二^softwareEngineer,z;Person.

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。