第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

求下面兩段代碼怎么理解?

!function(global){ //用函數(shù)包裹以防止基類的變量和函數(shù)在外部被更改

function DetectorBase(config)

{

if(!this instanceof DetectorBase){

throw new Error("Do't invoke without new.");

}

this.config = config;

this.analyze();

}


DetectorBase.prototype.detect = function(){

throw new Error("not implemented");

}

如上所示,就是老師前2段代碼,沒理解,第一段代碼在function DetectorBase(){}外層添加了立即執(zhí)行函數(shù),按照注釋:用函數(shù)包裹以防止基類的變量和函數(shù)在外部被更改,為什么這么說?不是說函數(shù)內(nèi)部實(shí)現(xiàn)的屬性和方法都屬于局部變量離開這個函數(shù)都會銷毀,為什么還要額外在外層添加這個立即執(zhí)行函數(shù)?

問題二;既然是立即執(zhí)行函數(shù)函數(shù)其結(jié)構(gòu)應(yīng)為(function(參數(shù)){//do sth})(),為什么沒有圓括號?

問題三:對于立即執(zhí)行函數(shù)里的參數(shù)global是干什么用的,不添加該參數(shù)會怎樣?

問題四:

DetectorBase.prototype.detect = function(){

throw new Error("not implemented");

}

這個拋出是為了什么?后邊的錯誤拋出全是為了如果不是構(gòu)造器new出來的新對象,則拋出錯誤;此處的拋出錯誤是為了什么?

正在回答

4 回答

問題1:可以在函數(shù)外部通過defineproperty的方法添加、修改函數(shù)中的屬性,所以是不安全的。

這是我的理解,不知道對不對~

0 回復(fù) 有任何疑惑可以回復(fù)我~

我的理解,問題四:DetectorBase作為基類在proptype對象上定義了一個抽象方法detect并拋出一個異常,當(dāng)子類繼承了父類后,如果沒有去定義detect方法,那么會通過原型鏈向上查找到父類的detect方法,拋出一個異常。如果子類定義了detect方法,那么就不會從原型鏈向上查找父類的方法。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕村9107202

應(yīng)該是類似于java中方法的重寫
2018-03-18 回復(fù) 有任何疑惑可以回復(fù)我~

問題1: 因?yàn)閖avascript語言是沒有塊級作用域的。請看javascript高級程序設(shè)計(jì)第76頁。

0 回復(fù) 有任何疑惑可以回復(fù)我~

只能回答問題二:?。ǎ﹞}同等于(function(){})

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉3988711 提問者

謝謝啊,剩下三個我在等等
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

求下面兩段代碼怎么理解?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號