AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JavaScript

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

51自学网 http://www.wanshiok.com
Function.prototype.apply,Function.prototype.call

老是忘掉这两个东东的用下,写下来做个记录吧。
他们作用是一模一样的,只是传入的参数不一样

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


Function.prototype.apply,Function.prototype.call  
上一篇:原生js实现addClass,removeClass,hasClass方法  下一篇:常用原生JS兼容性写法汇总