關(guān)于new運(yùn)算符

function Base(){
...
}

var obj = new Base();
這樣代碼的結(jié)果是什么,我們?cè)趈avascript引擎中看到的對(duì)象模型是:


joo_3.png

;

new操作符具體干了什么呢?其實(shí)很簡(jiǎn)單,就干了三件事情。

var obj = {};
obj.proto = Base.prototype;
Base.call(obj);

如果我們給Base.prototype的對(duì)象添加一些函數(shù)會(huì)有什么效果呢?
例如代碼如下:

Base.prototype.toString = function() {
return this.id;
}

那么當(dāng)我們使用new創(chuàng)建一個(gè)新對(duì)象的時(shí)候,根據(jù)proto的特性,toString這個(gè)方法也可以做新對(duì)象的方法被訪問到。于是我們看到了:
構(gòu)造函數(shù)中,我們來設(shè)置‘類’的成員變量(例如:例子中的id),構(gòu)造對(duì)象prototype中我們來設(shè)置‘類’的公共方法。于是通過函數(shù)對(duì)象和Javascript特有的proto與prototype成員及new操作符,模擬出類和類實(shí)例化的效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 如何控制alert中的換行?\n alert(“p\np”); 請(qǐng)編寫一個(gè)JavaScript函數(shù) parseQu...
    heyunqiang99閱讀 1,139評(píng)論 0 6
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,118評(píng)論 2 17
  • 相關(guān)知識(shí)點(diǎn) 數(shù)據(jù)類型、運(yùn)算、對(duì)象、function、繼承、閉包、作用域、原型鏈、事件、RegExp、JSON、Aj...
    sandisen閱讀 11,485評(píng)論 7 175
  • ECMAScript關(guān)鍵字 delete do else finally function in instance...
    doudou2閱讀 766評(píng)論 0 0
  • 單例模式 適用場(chǎng)景:可能會(huì)在場(chǎng)景中使用到對(duì)象,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見的單例模式,...
    Obeing閱讀 2,314評(píng)論 1 10

友情鏈接更多精彩內(nèi)容