欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

JS之this那些事

一直以來,對this的討論都是熱門話題。有人說掌握了this就掌握了JavaScript的80%,說法有點夸張,但可見this的重要性。至今記錄了很多關(guān)于this的零碎筆記,今天就來個小結(jié)。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了會寧免費建站歡迎大家使用!

 本人看過對this解釋的最簡單的說法:誰調(diào)用這個函數(shù),this指向誰。 好啦,就是這么簡單。下面再來具體說一下,請隨時用這個說法去驗證。

 先來看一道js面試題熱熱身:

JS之this那些事

var obj = {
  foo: function(){
    console.log(this)
  }
} 
var bar = obj.foo
obj.foo() //  objbar() //  window

JS之this那些事

 obj.foo()套用“誰調(diào)用指向誰”的說法就很好理解了,但bar()為啥是window。其實,這個也是可以套用這個簡單的說法。前面我們var了一個變量bar,請注意,這個bar是個全局變量,即bar===window.bar,并把函數(shù)obj.foo賦給bar,此時直接調(diào)用bar(),就等于window.bar()。這樣就好理解了,這個函數(shù)就是window調(diào)用的,沒毛病了。關(guān)于這道題的解釋,也可以參考這篇文章:http://mp.weixin.qq.com/s/ksqtCd8ouxU-cVc_HnA4Aw

 

牢記這句話:“誰調(diào)用指向誰”,搞清誰調(diào)用的,解決大部分的this問題足夠了。下面說幾個this的特殊情況:

 

1、函數(shù)被具體對象調(diào)用時,指向直接調(diào)用者。如果這個函數(shù)里面嵌套有函數(shù),里面函數(shù)的this不會指向這個調(diào)用者,可通過that=this改變指向。內(nèi)部函數(shù)用that調(diào)用該對象屬性。

JS之this那些事

var name="out";var obj={
      name:"in",
      outFoo:function(){           var that=this;//將this賦給that,內(nèi)部函數(shù)的that指向obj
           function inFoo(){                 this.name;   // out,此時this指向window
                 that.name;  // in,此時that指向obj           }
      },
};

JS之this那些事

 

2、如果函數(shù)通過new調(diào)用,那么就會創(chuàng)建一個對象,并且this 指向新創(chuàng)建的對象。    

JS之this那些事

function Foo(){     //var this=new Object();函數(shù)內(nèi)部隱式默認(rèn)創(chuàng)建this對象并返回this
     this.name="foo";     //return this;}var obj=new Foo();  //將返回的this賦給objconsole.log(obj.name);// foo

JS之this那些事

 

3、setTimeOut、setInterval函數(shù)中的this指向window。

4、通過apply或call調(diào)用時,this會動態(tài)改變它的指向。這倆種方法都接受倆個參數(shù),第一個都是調(diào)用這個函數(shù)的對象。用法:functionNmae.apply(調(diào)用的對象,參數(shù)2)。

5、通過bind()調(diào)用時,這個與前面兩個用法差不多,只不過bind()靜態(tài)綁定this,一旦綁定了就不會改變,即使用call或apply也沒用,同時返回一個函數(shù)體待執(zhí)行

網(wǎng)頁名稱:JS之this那些事
文章源于:http://chinadenli.net/article22/jhpojc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)軟件開發(fā)網(wǎng)站營銷外貿(mào)建站品牌網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)