Javascript之this

一.、概念

this是在運(yùn)行時進(jìn)行綁定的,不是在編寫時進(jìn)行綁定,取決于函數(shù)的調(diào)用方式

二、四條綁定規(guī)則

  1. 默認(rèn)綁定
    即獨(dú)立函數(shù)調(diào)用,無法應(yīng)用其他規(guī)則時使用此規(guī)則
      function foo(){
        "use strict"
        console.log(this.a);
      }
      var a = 2;
      foo() //嚴(yán)格模式下,this不指向window,否則指向window
  1. 隱式綁定
    當(dāng)函數(shù)引用有上下文對象時,隱式綁定會把this綁定到該上下文對象;

例如:

      function foo(){
        console.log(this.a);
      }
    var obj = {
      a:42,
      foo:foo
    }
    obj.foo()
注:對象屬性引用鏈中只有最后一層影響調(diào)用位置

例如:

    function foo(){
      console.log(this.a);
    }
    var obj = {
      a:2,
      foo:foo
    }
    var obj1 = {
      a:22,
      obj:obj
    }
    obj1.obj.foo() //2

2_1:隱式綁定丟失

      function foo(){
        console.log(this.a);
      }
      var obj = {
        a:2,
        foo:foo
      }
      var bar = obj.foo;
      var a = "oops"
      bar() //osps

3.顯式綁定

      function foo(){
        console.log(this.a)
      }
      var obj = {
        a:2
      }
      var bar = function (){
        foo.call(obj)
      }
      bar() //2
      setTimeout(bar,100)//2
      bar.call(window)//2

4.New操作符綁定

function Foo(){
  this.name ="A"
}
var obj =new Foo()
console.log(obj.name);

三、綁定優(yōu)先級

new操作符>顯式>隱式>默認(rèn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 this 關(guān)鍵字是 JavaScript 中最復(fù)雜的機(jī)制之一。之前筆者在使用RN開發(fā)的時候碰到了 this ...
    HideOnBush閱讀 283評論 0 1
  • 前言 近期準(zhǔn)備好好的讀一讀《你不知道的JavaScript(上卷)》這本書,俗話說的好,好記性不如爛筆頭,讀到th...
    不止前端閱讀 357評論 0 2
  • this是JavaScript中的一個很特別的關(guān)鍵字,同時,它也是JavaScript中最復(fù)雜的機(jī)制之一,重要性同...
    蕭玄辭閱讀 235評論 0 0
  • 攝影:SHILO設(shè)備:佳能7D
    一墨志閱讀 383評論 3 5
  • 連續(xù)三個星期沒有休息了,特別是清明防火期間,早五點(diǎn)上山,晚八點(diǎn)下山,作息紊亂,睡眠不足,七天日夜顛倒的生活之后,又...
    墨遙閱讀 382評論 0 0

友情鏈接更多精彩內(nèi)容