var a=1
//就相當於window.a=1
function
demo1()
function
demo2()
return demo3
}demo1() // 呼叫demo1函式,這裡this很顯然指向window
var a=demo2();
a() // 這裡看到會列印出3,應該也很好理解,a變數將demo2函式執行後的的返回值及demo3函式返回,然後執行,此時this依舊指向window
var obj1=
}obj1.increment() // obj1},4 ;列印出obj1物件和4,obj1包含乙個value值和乙個increment方法,也好理解
var obj2=)()
},print:function()
}obj2.increment()
obj2.print()
var p=obj2.print
p()// 列印結果出如下
//
// 5
// 這又是啥 window
// undefined
// print 5
// print 1
this
,直接在全域性中宣告的函式this
會直接指向window
物件
var demo1=()=>
var demo2=()=>
return demo3
}demo1() // 呼叫demo1函式,這裡this還是指向window,因為之前說的在全域性下宣告本身就有個this指向window物件
var a=demo2();
a() // 3,這裡也一樣
var obj1=
}obj1.increment() // 這時候會看到輸出window物件和乙個nan
this
,所以執行increment函式中的this
依舊會指向window
,而window
下的value
還不存在,所以為undefined
再執行+1操作所以value
就變成了nan
了
var obj2=)()
},print:function()
}obj2.increment()
obj2.print()
var p=obj2.print
p()// 列印結果出如下
// window
// nan
// 這又是啥 window
// nan
// print 1
// print 1
window
物件(this沒繫結的嘛),後面的value當然又是沒宣告.....然後自執行函式也沒得說,後面才接著給window
的value
賦值為1了,後面就兩句自然輸出兩次1了
北大青鳥學校
前端開發小組
js中this指向總結
昨天,剛看了這部分內容,怕自己以後會忘記,所以這裡做乙個總結,也再次重溫一遍知識點。this指向,this指呼叫當前方法 屬性 的物件,這裡重點是首先要呼叫,後面才是物件,所以在js中 這算是簡單的理解,也和全域性變數區域性變數的感覺差不多 後期較為複雜的有用this或者that作為引數傳參,然後達...
js中this指向的總結
js中的this指向問題可謂是老生常談。我這樣的初學者大多數會認為很繞。本篇部落格會把this指向問題按照權重進行分級,並指出一些經常出問題的情景。這一級就是所謂的沒有呼叫,this指向window。如下 function test test 其實這個可以理解為,因為全域性的函式,呼叫時其實可以理解...
JS中this指向問題
解析器在呼叫函式時,每次都會向函式內部傳遞進乙個隱含的引數,這個隱含的引數就是this,this指向的是乙個物件,這個物件我們稱之為函式執行的上下文物件,根據函式的呼叫方式不同,this會指向不同的物件.簡單來說一下函式中this指向問題,1.this是什麼?任何函式本質上都是通過某個物件來呼叫的,...