国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

JavaScript 常見錯(cuò)誤八:為實(shí)例方法創(chuàng)建錯(cuò)誤的指引

2021-09-18 15:59 更新

我們來看下面一段代碼:

var MyObject = function() {} 

 MyObject.prototype.whoAmI = function() {     

console.log(this === window ? "window" : "MyObj"); }; 

 var obj = new MyObject(); 

現(xiàn)在為了方便起見,我們新建一個(gè)變量來指引 whoAmI 方法, 因此我們可以直接用 whoAmI() 而不是更長(zhǎng)的obj.whoAmI():

var whoAmI = obj.whoAmI;

接下來為了確保一切都如我們所預(yù)測(cè)的進(jìn)行,我們可以將 whoAmI 打印出來:

console.log(whoAmI); 

結(jié)果是:

function () {     console.log(this === window ? "window" : "MyObj"); } 

沒有錯(cuò)誤!

但是現(xiàn)在我們來查看一下兩種引用的方法:

obj.whoAmI();  // 輸出 "MyObj" (as expected) 

whoAmI();      // 輸出 "window" (uh-oh!) 

哪里出錯(cuò)了呢?

原理其實(shí)和上面的第二個(gè)常見錯(cuò)誤一樣,當(dāng)我們執(zhí)行 var whoAmI = obj.whoAmI;的時(shí)候,新的變量 whoAmI 是在全局環(huán)境下定義的。因此它的this 是指window, 而不是obj!

正確的編碼方式應(yīng)該是:

`var MyObject = function() {}  

MyObject.prototype.whoAmI = function() {     

      console.log(this === window ? "window" : "MyObj"); }; 

var obj = new MyObject(); 

obj.w = obj.whoAmI;   // still in the obj namespace  obj.whoAmI();  // 輸出 "MyObj" (as expected) 

obj.w();       // 輸出 "MyObj" (as expected) `
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)