<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] # this -- 總結 總體來說this 綁定形式分為四種,**默認綁定**、**隱式綁定**、**顯示綁定**、**new綁定** 1. **默認綁定**函數沒有被綁定到某個對象上進行調用,這類調用指向**window**,可以理解成是**window調用這些函數** ~~~ function a() { console.log(this) } a() ~~~ 2. **隱式綁定**:是通過某個**對象發起的函數調用**,這類this 指向往往是發起對象 ~~~ const a = { fun(){ console.log(this) // a } } a.fun() ~~~ 3. **顯示綁定**:使用**call和apply**方法,間接的將**this**綁定到了這個對象上,這類操作們明確的綁定了this指向的對象 ~~~ const a = {} function b() { console.log(this) // a } b.call(a) ~~~ 4.**new綁定**:這里this指向是其返回新函數(注:前提構造函數沒有返回其他對象) * 注:總體來說常見日常使用都是遵循誰調用指向誰的規則 >[info] ## 優先級 **默認綁定** < **隱式綁定** < **顯示綁定** <**new綁定** ~~~ // function foo() { // console.log("foo:", this) // } // 比較優先級: // 1.顯式綁定綁定的優先級高于隱式綁定 // 1.1.測試一:apply高于默認綁定 // var obj = { foo: foo } // obj.foo.apply("abc") // obj.foo.call("abc") // 1.2.測試二:bind高于默認綁定 // var bar = foo.bind("aaa") // var obj = { // name: "why", // baz: bar // } // obj.baz() // 2.new綁定優先級高于隱式綁定 // var obj = { // name: "why", // foo: function() { // console.log("foo:", this) // console.log("foo:", this === obj) // } // } // new obj.foo() // 3.new/顯式 // 3.1. new不可以和apply/call一起使用 // 3.2. new優先級高于bind // function foo() { // console.log("foo:", this) // } // var bindFn = foo.bind("aaa") // new bindFn() // 4.bind/apply優先級 // bind優先級高于apply/call function foo() { console.log("foo:", this) } var bindFn = foo.bind("aaa") bindFn.call("bbb") ~~~
                  <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>

                              哎呀哎呀视频在线观看