關於JavaScript中call()和apply() 的一些理解
關於JavaScript中call()和apply() 的一些理解
call()方法和apply()方法,在上層應用中用的不是很多,但在底層寫JS框架的時候卻常常看到。然後度娘谷哥一番,也發現好多達人寫出了自己的理解和筆記,但始終還是雲裏霧裏,於是去W3C學習了下
在W3C網上研究這兩個方法的時候,看到一個詞語,叫“對象冒充”,這個概念本人覺得還是挺重要的,讓我對這兩個方法理解起來更加直觀。
call()方法,看下官方給出的例子
function sayColor(sPrefix,sSuffix) { alert(sPrefix + r + sSuffix);};var obj = new Object();r = "blue";(obj, "The color is ", "a very nice color indeed.");
最後輸出的結果是“The color is blue, a very nice color indeed.”
call()方法就是將第一個參數替換方法中的this,然後後面的參數傳入該方法使用
apply()方法,同樣先看個官方給出的例子
function sayColor(sPrefix,sSuffix) { alert(sPrefix + r + sSuffix);};var obj = new Object();r = "blue";y(obj, new Array("The color is ", "a very nice color indeed."));
最後輸出的`結果仍然是“The color is blue, a very nice color indeed.”
其實call()方法和apply()方法可以粗略的認爲是差不多的,第一個參數都是替換方法中this關鍵字,只是後面傳給方法的傳參方式不同,call是直接對應,apply是利用數組,在數組中一一對應
相關文章
-
關於javascript中apply()和call()方法的區別
如果沒接觸過動態語言,以編譯型語言的思維方式去理解javaScript將會有種神奇而怪異的感覺,因爲意識上往往不可能的事偏偏就發生了,甚至覺得不可理喻.如果在學JavaScript這自由而變幻無窮的語言過程中遇到這種感覺,那 -
如何理解Javascript的caller,callee,call,apply區別
防溺水安全教育心得體會 篇1現在在我們身邊,我們可以看到好多關於溺水而釀成悲劇的事情,尤其是現在是各大學校放假的時間,學生們都已經在放暑假裏,在這段時間裏,溺水事故更是數不勝數,所以提高青少年對溺水的防範是很重要的 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項 -
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項