bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

JS之this那些事

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

網站建設哪家好,找創新互聯!專注于網頁設計、網站建設、微信開發、小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了會寧免費建站歡迎大家使用!

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

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

JS之this那些事

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

JS之this那些事

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

 

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

 

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

JS之this那些事

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

JS之this那些事

 

2、如果函數通過new調用,那么就會創建一個對象,并且this 指向新創建的對象。    

JS之this那些事

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

JS之this那些事

 

3、setTimeOut、setInterval函數中的this指向window。

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

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

網頁名稱:JS之this那些事
文章源于:http://vcdvsql.cn/article22/jhpojc.html

成都網站建設公司_創新互聯,為您提供外貿網站建設軟件開發網站營銷外貿建站品牌網站建設網站導航

廣告

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

成都網站建設