js面向?qū)ο?多種創(chuàng)建對象方法

js面向?qū)ο?多種創(chuàng)建對象方法

ID:39465039

大?。?7.50 KB

頁數(shù):4頁

時間:2019-07-03

js面向?qū)ο?多種創(chuàng)建對象方法_第1頁
js面向?qū)ο?多種創(chuàng)建對象方法_第2頁
js面向?qū)ο?多種創(chuàng)建對象方法_第3頁
js面向?qū)ο?多種創(chuàng)建對象方法_第4頁
資源描述:

《js面向?qū)ο?多種創(chuàng)建對象方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、少說話,多干事,F(xiàn)IRE!!!!!開始創(chuàng)建對象: 1.對象字面量。?varclock={??hour:12,??minute:10,??second:10,??showTime:function(){???alert(this.hour+":"+this.minute+":"+this.second);??}?}?clock.showTime();//調(diào)用2.創(chuàng)建Object實例?varclock=newObject();?clock.hour=12;?clock.minute=10;?clock.showHour=function(){alert(

2、clock.hour);};?clock.showHour();//調(diào)用由此可見屬性是可以動態(tài)添加,修改的?對象創(chuàng)建模式:1.工廠模式:就是一個函數(shù),然后放入?yún)?shù),返回對象,流水線工作?functioncreateClock(hour,minute,second){??varclock=newObject();???clock.hour=hour;???clock.minute=minute;??clock.second=second;???clock.showHour=function(){???alert(this.hour+":"+this.m

3、inute+":"+this.second);??};??returnclock;?};?varnewClock=createClock(12,12,12);//實例化?newClock.showHour();//調(diào)用優(yōu)點:總算優(yōu)點抽象的概念了。但是不能識別對象的類型呢!2.構(gòu)造函數(shù)模式?functionclock(hour,minute,second){??this.hour=hour;??this.minute=minute;??this.second=second;??this.showTime=function(){???alert(this

4、.hour+":"+this.minute+":"+this.second);??}?}?varnewClock=new?clock(12,12,12);??alert(newClock.hour);?注意:這個new關(guān)鍵字是必須,如果不加,clock就不會當(dāng)成構(gòu)造函數(shù)調(diào)用,而只是一個普通的函數(shù)。同時,還會意外地給他的外部作用域即window添加屬性,因為此時構(gòu)造函數(shù)內(nèi)部的this已經(jīng)映射到了外部作用域了。所以為了安全起見,可以這樣創(chuàng)建?functionclock(hour,minute,second){??if(thisinstanceofcloc

5、k){???this.hour=hour;???this.minute=minute;???this.second=second;???this.showTime=function(){????alert(this.hour+":"+this.minute+":"+this.second);???}??}??else{???thrownewError("pleaseadd'new'tomakeainstance");??}?}構(gòu)造函數(shù)的缺點:由于this指針在對象實例的時候發(fā)生改變指向新的實例。這時新實例的方法也要重新創(chuàng)建,如果n個實例就要n次重建相

6、同的方法。于是讓我們來揭開原型模式吧3.原型模式??functionclock(hour,minute,second){?}?clock.prototype.hour=12;?clock.prototype.minute=12;?clock.prototype.second=12;?clock.prototype.showTime=function(){??alert(this.hour+":"+this.minute+":"+this.second);?}?varnewClock=newclock();?newClock.showTime();深度

7、理解原型模型很重要,首先,每個函數(shù)都有一個prototype(原型)屬性,這個指針指向的就是clock.prototype對象。而這個原型對象在默認(rèn)的時候有一個屬性constructor,指向clock,這個屬性可讀可寫。而當(dāng)我們在實例化一個對象的時候,實例newClock除了具有構(gòu)造函數(shù)定義的屬性和方法外(注意,只是構(gòu)造函數(shù)中的),還有一個指向構(gòu)造函數(shù)的原型的指針,ECMAScript管他叫[[prototype]],這樣實例化對象的時候,原型對象的方法并沒有在某個具體的實例中,因為原型沒有被實例。(廢話有點多,沒有誤導(dǎo)您吧。別暈)所以這種模式定義

8、的對象,在調(diào)用方法的時候過程:調(diào)用newClock.showTime();先看實例中有沒有,有調(diào)之,無追蹤到

當(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)系客服處理。