国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[js高手之路]搞清楚面向?qū)ο?必須要理解對象在創(chuàng)建過程中的內(nèi)存表示

binta / 2426人閱讀

摘要:面向?qū)ο缶幊谭绞剑瑢τ诔鯇W者來說,會比較難懂要學會面向?qū)ο笠约笆褂妹嫦驅(qū)ο缶幊蹋斫鈱ο蟮膭?chuàng)建在內(nèi)存中的表示,至關(guān)重要首先,我們來一段簡單的對象創(chuàng)建代碼衛(wèi)莊衛(wèi)莊上例,我們創(chuàng)建了兩個對象和如果有多個類似對象,我們可以通過函數(shù)封裝,這種函數(shù)封裝

javascript面向?qū)ο缶幊谭绞剑瑢τ诔鯇W者來說,會比較難懂. 要學會面向?qū)ο笠约笆褂妹嫦驅(qū)ο缶幊蹋斫鈱ο蟮膭?chuàng)建在內(nèi)存中的表示,至關(guān)重要.

首先,我們來一段簡單的對象創(chuàng)建代碼

 1         var obj = new Object();
 2         obj.userName = "ghostwu";
 3         obj.showUserName = function(){
 4             return obj.userName;
 5         };
 6         var obj2 = new Object();
 7         obj2.userName = "衛(wèi)莊";
 8         obj2.showUserName = function(){
 9             return obj2.userName;
10         };
11 
12         console.log( obj.showUserName() ); //ghostwu
13         console.log( obj2.showUserName() ); //衛(wèi)莊

上例,我們創(chuàng)建了兩個對象obj和obj2, 如果有多個類似對象,我們可以通過函數(shù)封裝,這種函數(shù)封裝方式,在設計模式里面叫工廠模式

1         function createObj( uName ){
 2             var obj = new Object();
 3             obj.userName = uName;
 4             obj.showUserName = function(){
 5                 return obj.userName;
 6             }
 7             return obj;
 8         }
 9         var obj1 = createObj( "ghostwu" );
10         var obj2 = createObj( "衛(wèi)莊" );
11         console.log( obj1.showUserName() ); //ghostwu
12         console.log( obj2.showUserName() ); //衛(wèi)莊

工廠模式簡化了創(chuàng)建多個類似對象的過程,但是卻不能識別對象的類型,為了識別對象的創(chuàng)建類型,我們可以使用構(gòu)造函數(shù)方式.

什么是構(gòu)造函數(shù)方式?

其實我們js很多創(chuàng)建內(nèi)存對象的方式 都是構(gòu)造函數(shù)方式,如,數(shù)組: var arr = new Array ( 5 ), 時間對象: var date = new Date()

函數(shù)前面帶上new關(guān)鍵字,是構(gòu)造函數(shù)的外在表現(xiàn)

 1         function CreateObj( uName ){
 2             this.userName= uName;
 3             this.showUserName = function(){
 4                 return this.userName;
 5             }
 6         }
 7         var obj1 = new CreateObj( "ghostwu" );
 8         var obj2 = new CreateObj( "衛(wèi)莊" );
 9 
10         console.log( obj1.showUserName() ); //ghostwu
11         console.log( obj2.showUserName() ); //衛(wèi)莊

首先,明確幾個事實:

任何函數(shù)前面都可以用new關(guān)鍵字

如果用了new關(guān)鍵字, 函數(shù)中的this指向的是 創(chuàng)建出來的對象, obj1造出來的時候,this指向的就是obj1,
obj2造出來的時候,this指向的就是obj2.

構(gòu)造函數(shù)把屬性和方法直接賦值給this, 不需要創(chuàng)建一個對象( new Object() )

構(gòu)造函數(shù)會自動return this

每new一個函數(shù), 就會在內(nèi)存中,生成一個獨立的內(nèi)存區(qū)域,用來存儲當前的對象,以及對象上面的方法和屬性

如果構(gòu)造函數(shù)前面不用new去掉用,函數(shù)中的this指向的是window, 相當于給window加屬性和方法,函數(shù)沒有返回值,就是undefined

obj1 = CreateObj( "ghostwu" );
obj2 = CreateObj( "衛(wèi)莊" );

console.log( obj1 ); //undefined
console.log( obj2 ); //undefined

那向下面這樣調(diào)用,就會報錯
console.log( obj1.showUserName() ); //報錯
console.log( obj2.showUserName() ); //報錯

因為obj1和obj2都是undefined,showUserName被加到windows對象上了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84917.html

相關(guān)文章

  • [js高手之路]構(gòu)造函數(shù)的基本特性與優(yōu)缺點

    摘要:所以一句話理解的運算規(guī)則為檢測左側(cè)的原型鏈上,是否存在右側(cè)的原型。 上文,通過基本的對象創(chuàng)建問題了解了構(gòu)造函數(shù),本文,我們接著上文繼續(xù)了解構(gòu)造函數(shù)的基本特性,以及優(yōu)缺點. 每個對象上面都有一個constructor屬性( 嚴格意義上來說,是原型上的,對象是通過查找到原型找到 constructor屬性 ).后面講到原型的時候,我會用示意圖的方式說明 1 functio...

    Ajian 評論0 收藏0
  • JavaScript 函數(shù)式編程導論

    摘要:函數(shù)式編程導論從屬于筆者的前端入門與工程實踐。函數(shù)式編程即是在軟件開發(fā)的工程中避免使用共享狀態(tài)可變狀態(tài)以及副作用。 JavaScript 函數(shù)式編程導論從屬于筆者的Web 前端入門與工程實踐。本文很多地方是講解函數(shù)式編程的優(yōu)勢,就筆者個人而言是認可函數(shù)式編程具有一定的好處,但是不推崇徹底的函數(shù)式編程化,特別是對于復雜應用邏輯的開發(fā)。筆者在應用的狀態(tài)管理工具中就更傾向于使用MobX而不是...

    forrest23 評論0 收藏0
  • 程序員入門學習指南

    摘要:程序員的入門規(guī)劃我該學習什么語言這個問題困擾了幾乎所有的程序員,比如應用廣好就業(yè),比如入門簡單,和安卓待遇高,和開發(fā)效率高,是萬能語言,和前端缺人才等等個人見解先學習難度小,大眾化的編程語言,比如,,,這幾個學哪一種其實差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學習什么語言? 這個問題困擾了幾乎所有的程序員,比如java應用廣好就業(yè),比如php入門簡單,ios和安卓待遇高,rub...

    Kahn 評論0 收藏0
  • 程序員入門學習指南

    摘要:程序員的入門規(guī)劃我該學習什么語言這個問題困擾了幾乎所有的程序員,比如應用廣好就業(yè),比如入門簡單,和安卓待遇高,和開發(fā)效率高,是萬能語言,和前端缺人才等等個人見解先學習難度小,大眾化的編程語言,比如,,,這幾個學哪一種其實差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學習什么語言? 這個問題困擾了幾乎所有的程序員,比如java應用廣好就業(yè),比如php入門簡單,ios和安卓待遇高,rub...

    princekin 評論0 收藏1
  • JS程序

    摘要:設計模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設計模式必須要先搞懂面向?qū)ο缶幊蹋駝t只會讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學習總結(jié)。知識只有分享才有存在的意義。 是時候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<