函式呼叫 通過apply和call方法呼叫

2022-04-29 07:27:11 字數 931 閱讀 2959

不同型別函式呼叫之間的主要區別在於:最終作為函式上下文(可以通過this引數隱式引用到)傳遞給執行函式物件不同。對於方法而言,即為所在的物件;對於函式而言是window或是undefined(取決於是否處於嚴格模式下);

對於建構函式而言是乙個新建立的物件例項。

click me

在這個例子中,我們定義了乙個按鈕click me,並且想知道他是否曾被單擊過。為了儲存單擊狀態的狀態資訊,我們使用建構函式建立乙個名為button的例項化物件,通過該物件我們可以儲存被

單擊的狀態:

function button() 

}var button = new button();

在該物件中,我們還得意了click方法作為單擊按鈕式觸發的事件處理函式,該方法將clicked屬性設定為true,然後測試例項化物件的狀態是否正確(我們有意使用button識別符號而非this關鍵字)----它們應該具有相同的指向,

(但事實果真如此嗎?)。最後,我們建立了button.click方法作為按鈕的單擊處理函式。

var elem = document.getelelemtbyid('test');

elem.addeventlistener("click",button.click);

juggle.call(ninja2,5,6,7,8);

assert(ninja2.result === 26, "juggled via call");

function juggle() 

this.result = result;

}var ninja1 = {}

var ninja2 = {}

JavaScript中apply和call的理解

這兩個方法作用是相同,只是用法不同,null 代表不需要改變this的指向 console.log math.max.call null,1,2,3,4,5,6,1000 var obj1 var obj2 window.name window var getname function getnam...

function的方法 apply和 call

myfunc.call theobj,arg1,arg2.的作用是執行myfunc函式,其引數為arg1,arg2.但和一般的執行有些區別,這裡它重新指定了myfunc的主體物件,也就是說,原來假設myfunc是myobj的乙個成員函式或者myfunc是乙個全域性函式,現在就讓它作為theobj的乙...

使用apply呼叫函式

題目描述 實現函式 callit,呼叫之後滿足如下條件 1 返回的結果為呼叫 fn 之後的結果 2 fn 的呼叫引數為 callit 的第乙個引數之後的全部引數 因為arguments並非真正的陣列,因此要獲得callit的第乙個引數之後的所有引數,2不能直接使用slice方法擷取,需要先將argu...