总是忘记这两个东东的用下,写下来做个纪录吧。
他们作用是如出一辙的,只是传入的参数不一样
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();