简要咨询咨询QQ网站导航网站搜索手机站点联系我们设为首页加入收藏 

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

来源:易贤网   阅读:890 次  日期:2016-07-06 14:54:52

温馨提示:易贤网小编为您整理了“Function.prototype.apply()与Function.prototype.call()小结”,方便广大网友查阅!

JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时,用 call,而不确定的时候,用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过 arguments 这个数组来便利所有的参数

老是忘掉这两个东东的用下,写下来做个记录吧。

他们作用是一模一样的,只是传入的参数不一样

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();

更多信息请查看网络编程
点此处就本文及相关问题在本站进行非正式的简要咨询(便捷快速)】     【点此处查询各地各类考试咨询QQ号码及交流群
上一篇:原生js实现addClass,removeClass,hasClass方法
下一篇:常用原生JS兼容性写法汇总
易贤网手机网站地址:Function.prototype.apply()与Function.prototype.call()小结
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!