當前位置:才華齋>設計>網頁設計>

關於JavaScript中call()和apply() 的一些理解

網頁設計 閱讀(1.46W)

關於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是利用陣列,在陣列中一一對應