我理解javascript中call和apply的区别仅在于语法不同。
下例中分别调用call和apply对myObj进行修改,语法不同,但使用效果是一样的:
- var myObj = {
- "a":1,
- "b":2,
- "c":3
- }
- var myFunc = function(a,b,c){
- this.a=a;
- this.b=b;
- this.c=c;
- }
- myFunc.call(myObj,4,5,6);//参数个数无限制
- iJs.showObject("myObj");
- myFunc.apply(myObj,[7,8,9]);//第二个参数是数组
- iJs.showObject("myObj");
调试信息:
[Object] myObj
|--[number] a ------------- 4
|--[number] b ------------- 5
|--[number] c ------------- 6
[Object] myObj
|--[number] a ------------- 7
|--[number] b ------------- 8
|--[number] c ------------- 9
[Object] myObj
|--[number] a ------------- 4
|--[number] b ------------- 5
|--[number] c ------------- 6
[Object] myObj
|--[number] a ------------- 7
|--[number] b ------------- 8
|--[number] c ------------- 9
本文转自 hexiaini235 51CTO博客,原文链接:http://blog.51cto.com/idata/1107836,如需转载请自行联系原作者