老是忘掉這兩個東東的用下,寫下來做個記錄吧。
他們作用是一模一樣的,只是傳入的參數(shù)不一樣
apply
apply接受兩個參數(shù),第一個制定了函數(shù)體內(nèi)this對象的指向,第二個參數(shù)為一個帶下標(biāo)的集合(可遍歷對象),apply方法把這個集合中的元素作為參數(shù)傳遞給被調(diào)用的函數(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ù)體內(nèi)的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ù)體內(nèi)的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();新聞熱點
疑難解答