javascript中apply、call和bind的区别
2016-11-26 19:27
405 查看
相同点
都是改变函数this对象的指向的.第一个参数都是this要指向的对象.
都可以利用后续参数传参.
区别
案例一:(区分call\apply与bind的区别)
var ww = { name:"旺旺", gender:"男", age:24, say:function(){ alert(this.name+","+this.gender+",今年"+this.age); } } var yy = { name:"鱼鱼", gnder:"女", age:18 } ww.say();
结果显示为:旺旺,男,今年24
?如何让ww的say方法显示yy的数据,如下:
call方法
ww.say.call(yy);
apply方法
ww.say.apply(yy);
bind方法
ww.say.apply(yy)();
所以call和apply都是对函数直接调用,而bind方法返回的仍然是一个函数,所以还要用()来进行调用才可以.
案例二:
(区分call与apply的区别)
var ww = { name:"旺旺", gender:"男", age:24, say:function(school,grade){ alert(this.name+","+this.gender+",今年"+this.age+",在"+school+"上"+grade); } } var yy = { name:"鱼鱼", gnder:"女", age:18 } ww.say();
call
ww.say.call(yy,"实验中学","六年级");
apply
ww.say.call(yy,["实验中学","六年级"]);
bind
ww.say.call(yy,"实验中学","六年级")();
区别在于call后面的参数与say方法中是一一对应的,而apply的第二个参数是一个数组,数组中的元素与say方法中一一对应的,这就是两者最大区别.
原文讲解点这里
相关文章推荐
- javascript中apply、call和bind的区别
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
- javascript中apply、call和bind的区别
- javascript中apply、call和bind的区别
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
- JavaScript方法call、apply、caller、callee、bind的使用详解及区别
- javascript -- apply/call/bind的区别
- javascript中this、apply、call、bind的用法和区别
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
- JavaScript apply、call、caller、callee、bind使用方法与区别分析
- javascript中apply、call和bind的使用区别
- JavaScript中apply、call和bind的区别
- javascript中apply、call和bind的区别
- javascript中apply、call和bind的区别
- javascript中apply、call和bind的区别
- Javascript中apply、call、bind的使用和区别
- JavaScript中的call、apply、bind方法的区别
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
- javascript中apply、call和bind的区别
- javascript中apply、call和bind的使用区别