老是忘掉这两个小编的用下,写下来做个记录吧。 他们作用是一模一样的,只是传入的参数不一样
apply
apply接受两个参数,第一个制定了函数体内this对象的指向,第二个参数为一个带下标的集合(可遍历对象),apply方法把这个集合中的元素作为参数传递给被调用的函数:
rush:js;">
var func = function(a,c,c){
alert([a,b,c]); //[1,2,3]
}
func.apply(null,[1,3]);
call
call传入的参数不固定,和apply相同的是,第一个参数也是代表函数体内的this指向,第二个参数开始往后,每个参数被依次传入函数:
rush:js;">
var func = function(a,3]
}
func.call(null,1,3);
call是aplly的一颗语法糖。如果第一个参数为null,函数体内的this指向宿主对象,在浏览器中是window。
call和apply的用途
1.改变this指向
上面的例子就是啦
2.Function.prototype.bind
模拟Function.prototype.bind
rush:js;">
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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。