<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                this關鍵字是JavaScript中最復雜的機制之一,是一個特別的關鍵字,被自動定義在所有函數的作用域中,但是相信很多JsvaScript開發者并不是非常清楚它究竟指向的是什么。本文旨在對this進行初步的了解。 ![這里寫圖片描述](https://box.kancloud.cn/2016-04-07_570603edad1d6.jpg "") person1.grow();//25 setTimeout(person1.grow, 100);//undefined 至所以出現兩個不一樣的結果,是因為grow函數丟失了同this之間的綁定。 對于這個問題,暫且保留。繼續往下看 person2.grow();//undefined 這是因為在person2的grow函數中,this指代的對象即是全局對象window(非嚴格模式下,嚴格模式下this指代的為undefined). 對于這個問題,比較好解決,我們的目的是綁定在person2作用域上。 因此我們可以像下面這樣書寫: 將this賦值給self;因為在setTimeout函數外部,this對象指代的是person2,我們可以將其賦值給self,解決此處this綁定的問題。self只是一個可以通過詞法作用域和閉包進行引用的標識符,不關系this綁定的過程中發生了什么。 ![這里寫圖片描述](https://box.kancloud.cn/2016-04-07_570603edc0022.jpg "") ES6(ECMAScript6)引入了一個箭頭函數,和上面一樣可以解決此問題。=>是ES6中添加的一個特殊的語法格式用于函數聲明。 100 胖箭頭函數在涉及到this綁定時的行為和普通函數的行為完全不一致,它放棄了普通this綁定的規則,使用當前的詞法作用域覆蓋this本來的值。 “胖箭頭”的用法,胖箭頭通常被認為是function關鍵字的簡寫。 ![這里寫圖片描述](https://box.kancloud.cn/2016-04-07_570603edd0456.jpg "") 言歸正傳,繼續探討解決此問題的其它方法,有一個更好的方法是正確的使用和包含this機制。 ![這里寫圖片描述](https://box.kancloud.cn/2016-04-07_570603ede0e3a.jpg "") bind(this),此處的this指代的是person對象,作用與胖箭頭一樣。 到這個地方,對于person1的問題,我們仍然沒有解決。 前面的方法對其都是不起作用的,很明顯,我們在person1對象外部使用setTimeout去調用函數,this會指代全局對象window(同樣是非嚴格模式下),因此,此處采用簡單粗暴的方法,用call強制性的將this綁定到person1上。 ![這里寫圖片描述](https://box.kancloud.cn/2016-04-07_570603edf421d.jpg "") 希望本文能對你了解JavaScript的關鍵字this有所幫助。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看