注:本文案例環境為非嚴格模式,嚴格模式下禁止關鍵字this指向全域性物件
一、方法是怎麼執行的?
首先說一下js中方法的執行,在window全域性下宣告乙個方法a:
function a ()
a();//window
全域性中執行這個方法普遍的方法是直接a(),這個方法的執行環境是window,控制台會列印出window物件。
那麼為什麼會列印出window物件呢?我們可以這樣理解,方法的執行必須要有個直接呼叫者,剛才那個方法a是定義在window全域性下的,window下的變數和方法有個特點就是訪問和呼叫的時候可以省略window!所以剛才執行a() === window.a(),也就是說,執行a方法時的直接呼叫者是window。!
上面有提到直接呼叫者,怎麼看待這個直接呼叫者呢?舉個例子,宣告乙個全域性物件obj:
var name = "window-name";
var obj = ,b:}
}obj.a();//obj-name
obj.b.a();//b-name
分別執行obj.a(); js中defer簡單理解
defer只是載入完成頁面元素後在執行js指令碼。其實就是簡單的利用defer屬性,讓瀏覽器讀js指令碼的時候完全不等指令碼開始讀就開始讀下面的啊,html 了。然後讓js指令碼自己在那裡慢慢讀取完以後再執行。給外鏈的js指令碼新增defer true 像下面這個這樣就可以了 特別是比較大的指令碼,...
js中defer簡單理解
defer只是載入完成頁面元素後在執行js指令碼。其實就是簡單的利用defer屬性,讓瀏覽器讀js指令碼的時候完全不等指令碼開始讀就開始讀下面的啊,html 了。然後讓js指令碼自己在那裡慢慢讀取完以後再執行。給外鏈的js指令碼新增defer true 像下面這個這樣就可以了 特別是比較大的指令碼,...
簡單理解js的this
js的this是什麼?關於這個東西,裡面有太多的解釋了,不過,本人看了一下,感覺對this解釋的有點複雜了,因此,本人在此給this乙個簡單易於理解的定義。this其實是js的乙個物件,至於是什麼物件呢?很簡單,this這個物件就是 誰呼叫它它就指向誰。關於這一點,其實,的文章已經說明了很多了,有的...