不同型別函式呼叫之間的主要區別在於:最終作為函式上下文(可以通過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...