首頁 > web前端 > js教程 > Function.prototype.apply()與Function.prototype.call()小結_基礎知識

Function.prototype.apply()與Function.prototype.call()小結_基礎知識

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-05-16 15:03:31
原創
1720 人瀏覽過

老是忘掉這兩個東東的用下,寫下來做個記錄吧。
他們作用是一模一樣的,只是傳入的參數不一樣

apply

apply接受兩個參數,第一個制定了函數體內this物件的指向,第二個參數為一個帶下標的集合(可遍歷物件),apply方法把這個集合中的元素當作參數傳遞給被呼叫的函數:

var func = function(a, c, c){
  alert([a,b,c]); //[1,2,3]
}
func.apply(null, [1,2,3]);

登入後複製

call

call傳入的參數不固定,和apply相同的是,第一個參數也是代表函數體內的this指向,第二個參數開始往後,每個參數依序傳入函數:

var func = function(a, b, c){
  alert([a,b,c]); //[1,2,3]
}
func.call(null, 1,2,3);
登入後複製

call是aplly的一顆語法糖。若第一個參數為null,函數體內的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();
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板