簡單快速理解js中的this call和apply

2021-10-07 11:29:04 字數 645 閱讀 7696

注:本文案例環境為非嚴格模式,嚴格模式下禁止關鍵字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這個物件就是 誰呼叫它它就指向誰。關於這一點,其實,的文章已經說明了很多了,有的...