亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

Javascript學習筆記之函數篇(五) : ?構造函數

2024-05-06 16:10:54
字體:
來源:轉載
供稿:網友
javascript本身是沒有類的概念,只有函數的概念。javascript的類實際上也是一個javascript的函數,在這個特殊的函數中間可以包含變量和其他javascript函數的引用。那么這個特殊的函數本身就是javascript所謂類的構造函數。
 
 

Javascript 中的構造函數與其他語言相比也是不同的。任何通過關鍵字 new 調用的函數都可以當做構造函數。
在構造函數體內,this 指向新創建的對象。如果構造函數體內沒有顯示的 return 表達式,那么我們就默認返回 this,也就是新建的對象。

 

復制代碼代碼如下:

function Foo() {
    this.bla = 1;
}
Foo.prototype.test = function() {
    console.log(this.bla);
};
var test = new Foo();

 

上面的代碼將 Foo 作為構造函數進行調用,并將新建對象的原型(__proto__)指向了 Foo.prototype。
如果我們在構造函數內定義返回的 return 表達式,構造函數就會返回整個表達式,但這個返回表達式必須為一個對象。

 

復制代碼代碼如下:

function Bar() {
    return 2;
}
new Bar(); // a new object
function Test() {
    this.value = 2;
    return {
        foo: 1
    };
}
new Test(); // the returned object

 

如果 new 被省略,那么函數將不能返回一個新的對象。

 

復制代碼代碼如下:

function Foo() {
    this.bla = 1; // gets set on the global object
}
Foo(); // undefined

 

上面的例子可能在某些場景下也可以運行,但由于 Javascript 中 this 的工作機制,這里 this 將指向全局對象。

工廠模式

為了能夠不使用關鍵字 new,構造函數將不得不顯示返回一個值。

 

復制代碼代碼如下:

function Bar() {
    var value = 1;
    return {
        method: function() {
            return value;
        }
    }
}
Bar.prototype = {
    foo: function() {}
};
new Bar();
Bar();

 

上例中使不使用 new 來調用函數 Bar 達到的效果是一樣的,將會返回一個新建的包含 method 方法的對象,這里實際上就是一個閉包。
這里需要注意一點,new Bar() 將不會返回 Bar.prototype,而是在 return 表達式內函數 method 的原型對象。
上例中,使用 new 與否在功能上是無差異的。

通過工廠模式創建新的對象

我們經常被提醒不要使用 new,因為一旦忘記了它的使用將導致錯誤。
為了創建一個對象,我們更愿意使用工廠模式并在工廠模式內構造一個新的對象。

 

復制代碼代碼如下:

function Foo() {
    var obj = {};
    obj.value = 'blub';

 

    var private = 2;
    obj.someMethod = function(value) {
        this.value = value;
    }

    obj.getPrivate = function() {
        return private;
    }
    return obj;
}

 

盡管上例代碼比使用 new 時更不容易出錯,而且在使用私有變量時將更加方便,但同時也有一些不好的地方:

因為不能共享原型對象,所以需要更多的內存。
為了實現繼承,工廠模式需要拷貝另一個對象的所有方法或者將其作為新對象的原型。
放棄原型鏈只是為了避免使用 new,這似乎與 Javascript 語言的精神相悖。

總結

盡管使用 new 可能比較容易產生錯誤,但這并不能成為放棄使用原型鏈的原因。至于最后采取哪種方式,這需要根據應用的需求而定。最好的方式就是選擇一種風格并堅持下去。

簡單的說構造函數就是初始化一個實例對象,對象的prototype屬性是繼承一個實例對象。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
夜色77av精品影院| 在线视频免费一区二区| 日韩美女免费观看| 欧美性极品少妇精品网站| 亚洲久久久久久久久久久| 亚洲国产精品va| 国产精品久久久久久久久久尿| 国产在线视频一区| 高潮白浆女日韩av免费看| 精品呦交小u女在线| 国产一区二区三区在线播放免费观看| 成人福利网站在线观看| 欧美激情伊人电影| 国产69精品久久久久99| 久久资源免费视频| 97久久精品人人澡人人爽缅北| 久久成人一区二区| 国产免费一区二区三区在线能观看| 98精品在线视频| 在线丨暗呦小u女国产精品| 国产欧美精品一区二区| 色综合伊人色综合网站| 国产视频亚洲视频| 国产一区二区久久精品| 精品人伦一区二区三区蜜桃网站| 日韩精品在线观看一区二区| 日韩大片在线观看视频| 国产91精品久久久久| 色小说视频一区| 午夜精品一区二区三区视频免费看| 91精品国产色综合久久不卡98| 久久精品国产亚洲一区二区| 久热精品视频在线| 亚洲精品国产精品国产自| 国产在线播放91| 日韩电影免费观看中文字幕| 97精品国产97久久久久久免费| 在线观看成人黄色| 97在线免费视频| 一本色道久久88综合日韩精品| 久久成人这里只有精品| 97在线视频观看| 国产精品一区电影| 国产999在线观看| 亚洲欧美日韩国产精品| 欧美一级大片视频| 日韩中文av在线| 久久精品国产免费观看| 国产欧美在线视频| 国产亚洲精品久久| 欧美成人亚洲成人日韩成人| 亚洲专区在线视频| 日韩免费电影在线观看| 黄色成人在线播放| 久久久久久久久久国产精品| 亚洲激情免费观看| 亚洲夜晚福利在线观看| 爽爽爽爽爽爽爽成人免费观看| 欧美精品免费在线| 欧美性生交大片免费| 欧美一级视频在线观看| 精品久久久av| 日韩成人在线免费观看| 亚洲人成电影网站色www| 欧美极品少妇全裸体| 久久视频国产精品免费视频在线| 国产精品一区二区女厕厕| 日韩在线一区二区三区免费视频| 国产精品永久免费观看| 国产在线观看一区二区三区| 欧美第一淫aaasss性| 欧美中文字幕在线播放| 欧美性xxxxxxx| 亚洲摸下面视频| 亚洲第一网站免费视频| 亚洲大胆人体av| 成人a在线观看| 亚洲人成网站777色婷婷| 亚洲自拍欧美另类| 亚洲福利在线视频| 色综合天天综合网国产成人网| 欧美制服第一页| 国产欧美日韩丝袜精品一区| www.午夜精品| 一区二区亚洲精品国产| 亚洲成人激情图| 日韩精品在线观看一区二区| 亚洲性夜色噜噜噜7777| 成人激情视频免费在线| 九九热这里只有在线精品视| 国产噜噜噜噜噜久久久久久久久| 亚洲乱码国产乱码精品精天堂| 亚洲国产毛片完整版| 激情亚洲一区二区三区四区| 欧美国产精品va在线观看| 欧美国产精品va在线观看| 欧洲美女7788成人免费视频| 国产精品视频网址| 久久精品国产电影| 欧美国产日韩一区二区| 亚洲女人被黑人巨大进入al| 国语自产精品视频在线看抢先版图片| 久久久久久久久久久亚洲| 国产亚洲激情在线| 国产欧美日韩精品丝袜高跟鞋| 欧美激情亚洲另类| 亚洲成avwww人| 亚洲欧美自拍一区| 国产精品自拍网| 蜜臀久久99精品久久久久久宅男| 国产精品久久久久国产a级| 成人a免费视频| 日韩小视频在线观看| 亚洲在线观看视频网站| 亚洲免费视频一区二区| 亚洲精品美女在线| 日韩在线观看网站| 欧美激情区在线播放| 亚洲天堂免费视频| 日日摸夜夜添一区| 日韩欧美a级成人黄色| 午夜精品一区二区三区视频免费看| 91福利视频在线观看| 欧洲美女7788成人免费视频| 国产精品美女无圣光视频| 日韩一区二区在线视频| www.久久久久久.com| 亚洲一区二区三区视频播放| 在线播放国产精品| 国产精品久久久久久久美男| 欧美黑人巨大精品一区二区| 欧美精品www在线观看| 久久久久久免费精品| 久久中文字幕在线视频| 久久69精品久久久久久国产越南| 欧美亚洲国产视频| 欧美在线观看日本一区| 中文字幕日韩专区| 国产精品91视频| 久久久999国产精品| 久久99久久亚洲国产| 亚洲精品理论电影| 91av中文字幕| 欧美高清自拍一区| 国产午夜精品全部视频在线播放| 国产91网红主播在线观看| 国产福利视频一区二区| 一区二区三区视频免费在线观看| 精品二区三区线观看| 亚洲精品久久久久久久久| 91视频国产高清| 亚洲白虎美女被爆操| 日韩欧美999| 亚洲精品久久久久中文字幕欢迎你| 色狠狠久久aa北条麻妃| 国产精品视频大全| 成人xvideos免费视频| 超碰91人人草人人干| 日韩三级成人av网| 琪琪亚洲精品午夜在线| 欧美成人精品一区二区三区| 欧美老女人www| 日本免费一区二区三区视频观看| 亚洲3p在线观看|