f12 打開瀏覽器控制臺
一、this 概念
當前執(zhí)行代碼的環(huán)境對象
粗暴理解:this 就是個對象
二、多種情況
(一). 全局環(huán)境中
在全局執(zhí)行環(huán)境中(在任何函數(shù)體外部)this
都指向
[1]全局對象。
console.log(this)
// window
(二). 函數(shù)內部
(劃重點,劃重點,劃重點,劃重點,劃重點,劃重點)
1. 簡單調用
this
指向window
function haha(){
console.log(this)
}
haha()
// window
個人理解
- haha()本身就是window對象下的一個函數(shù)
- haha()是被window這個對象調用的
- 把
haha()
看做window.haha()
- 所以用
2.作為對象的方法
理解的話 - 函數(shù)
haha
內部的this
,指向調用haha
的對象window
2. 作為對象的方法
-
如果這個函數(shù)是在對象的內部,并且是作為對象的方法被調用
那么,
this
指向調用這個函數(shù)的對象
var hahaObject = {
hahaName:'l名字',
hahaMethod:function(){
console.log(this)
}
}
hahaObject.hahaMethod() // hahaObject調用了hahaMethod這個函數(shù)
//{hahaName: "l名字", hahaMethod: ?}
-
如果對象中的函數(shù)被賦值給了一個變量
var hahaObject = { hahaName:'l名字', hahaMethod:function(){ console.log(this) } } var a = hahaObject.hahaMethod a() // window
函數(shù)是個單獨的值,所以函數(shù)可以在不同的環(huán)境中執(zhí)行
函數(shù)hahaMethod在棧中其實存的就是指向內存的一個地址
這個內存存了
函數(shù)hahaMethod賦值給了a這個變量
a獲得函數(shù)hahaMethod的地址
a就變成了window對象下的一個函數(shù)
GitHub
:book:《web_knowledge_hierarchy》
參考文章
-
this
是個對象,對象存在棧
里的只是一個指向內存
的地址
?