Function.prototype.apply()與Function.prototype.call()小結
老是忘掉這兩個東東的用下,寫下來做個記錄吧。
他們作用是一模一樣的,只是傳入的參數(shù)不一樣
apply
apply接受兩個參數(shù),第一個制定了函數(shù)體內this對象的指向,第二個參數(shù)為一個帶下標的集合(可遍歷對象),apply方法把這個集合中的元素作為參數(shù)傳遞給被調用的函數(shù):
var func = function(a, c, c){
alert([a,b,c]); //[1,2,3]
}
func.apply(null, [1,2,3]);
call
call傳入的參數(shù)不固定,和apply相同的是,第一個參數(shù)也是代表函數(shù)體內的this指向,第二個參數(shù)開始往后,每個參數(shù)被依次傳入函數(shù):
var func = function(a, b, c){
alert([a,b,c]); //[1,2,3]
}
func.call(null, 1,2,3);
call是aplly的一顆語法糖。如果第一個參數(shù)為null,函數(shù)體內的this指向宿主對象,在瀏覽器中是window。
call和apply的用途
1.改變this指向
上面的例子就是啦
2.Function.prototype.bind
模擬Function.prototype.bind
Function.prototype.bind = function(context){
var self = this;
return function(){
return self.apply(context, arguments);
}
};
var obj = {
name: 'cxs'
};
var func = function(){
alert(this.name); //cxs
}.bind(obj);
fun();
- js中apply()和call()的區(qū)別與用法實例分析
- 有關JavaScript中call()和apply() 的一些理解
- 深入理解關于javascript中apply()和call()方法的區(qū)別
- 淺談javascript的call()、apply()、bind()的用法
- 在JavaScript中call()與apply()區(qū)別
- 跟我學習javascript的call(),apply(),bind()與回調
- 淺談javascript中call()、apply()、bind()的用法
- JavaScript中的apply()方法和call()方法使用介紹
- JS面向對象、prototype、call()、apply()
- js中call()和apply()改變指針問題的講解
相關文章
深入理解JavaScript系列(21):S.O.L.I.D五大原則之接口隔離原則ISP詳解
這篇文章主要介紹了深入理解JavaScript系列(21):S.O.L.I.D五大原則之接口隔離原則ISP詳解,本文講解了JavaScript接口、ISP與JavaScript、墮落的實現(xiàn)、靜態(tài)耦合、語義耦合、可擴展性等內容,需要的朋友可以參考下2015-03-03
js中一維數(shù)組和二位數(shù)組中的幾個問題示例說明
這篇文章主要介紹了js中一維數(shù)組和二位數(shù)組中的幾個問題,并給出對應的解決方法,需要的朋友可以參考下2014-07-07
BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--JavaScript篇
很多面試題是我自己面試BAT親身經(jīng)歷碰到的。整理分享出來希望更多的前端er共同進步吧,不僅適用于求職者,對于鞏固復習js更是大有裨益2014-10-10

