有關JavaScript中call()和apply() 的一些理解
call()方法和apply()方法,在上層應用中用的不是很多,但在底層寫JS框架的時候卻常??吹健H缓蠖饶锕雀缫环?,也發(fā)現(xiàn)好多達人寫出了自己的理解和筆記,但始終還是云里霧里,于是去W3C學習了下
在W3C網上研究這兩個方法的時候,看到一個詞語,叫“對象冒充”,這個概念本人覺得還是挺重要的,讓我對這兩個方法理解起來更加直觀。
call()方法,看下官方給出的例子
function sayColor(sPrefix,sSuffix) { alert(sPrefix + this.color + sSuffix); }; var obj = new Object(); obj.color = "blue"; sayColor.call(obj, "The color is ", "a very nice color indeed.");
最后輸出的結果是“The color is blue, a very nice color indeed.”
call()方法就是將第一個參數(shù)替換方法中的this,然后后面的參數(shù)傳入該方法使用
apply()方法,同樣先看個官方給出的例子
function sayColor(sPrefix,sSuffix) { alert(sPrefix + this.color + sSuffix); }; var obj = new Object(); obj.color = "blue"; sayColor.apply(obj, new Array("The color is ", "a very nice color indeed."));
最后輸出的結果仍然是“The color is blue, a very nice color indeed.”
其實call()方法和apply()方法可以粗略的認為是差不多的,第一個參數(shù)都是替換方法中this關鍵字,只是后面?zhèn)鹘o方法的傳參方式不同,call是直接對應,apply是利用數(shù)組,在數(shù)組中一一對應
以上這篇有關JavaScript中call()和apply() 的一些理解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- JavaScript中的apply()方法和call()方法使用介紹
- JS面向對象、prototype、call()、apply()
- 在JavaScript中call()與apply()區(qū)別
- 跟我學習javascript的call(),apply(),bind()與回調
- js繼承call()和apply()方法總結
- js中apply()和call()的區(qū)別與用法實例分析
- 基于JavaScript實現(xiàn)繼承機制之調用call()與apply()的方法詳解
- 深入理解關于javascript中apply()和call()方法的區(qū)別
- 淺談javascript的call()、apply()、bind()的用法
- JavaScript函數(shù)apply()和call()用法與異同分析
- JS中call()和apply()的功能及用法實例分析
相關文章
深入理解JavaScript系列(30):設計模式之外觀模式詳解
這篇文章主要介紹了深入理解JavaScript系列(30):設計模式之外觀模式詳解,外觀模式(Facade)為子系統(tǒng)中的一組接口提供了一個一致的界面,此模塊定義了一個高層接口,這個接口值得這一子系統(tǒng)更加容易使用,需要的朋友可以參考下2015-03-03