源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Function.prototype.apply()与Function.prototype.call()小结

  • 时间:2021-03-29 01:05 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Function.prototype.apply()与Function.prototype.call()小结
老是忘掉这两个东东的用下,写下来做个记录吧。 他们作用是一模一样的,只是传入的参数不一样 [b]apply[/b] apply接受两个参数,第一个制定了函数体内this对象的指向,第二个参数为一个带下标的集合(可遍历对象),apply方法把这个集合中的元素作为参数传递给被调用的函数:
var func = function(a, c, c){
  alert([a,b,c]); //[1,2,3]
}
func.apply(null, [1,2,3]);

[b]call[/b] 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。 [b]call和apply的用途[/b] [b]1.改变this指向 [/b] 上面的例子就是啦 [b]2.Function.prototype.bind [/b] 模拟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();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部