call和apply遇见就胆怯,追究到底还是由于对其了解不透彻。今天读某个框架源码时,大大的伤了一把自尊,call和apply用法模糊,导致读源码逻辑不清楚。翻出犀牛书,扎进去,189页-190页读几遍,总结如下:
call用法:
f.call(o,para1,para2,....);
apply用法:
f.apply(o,[para1,para2,....]);
说明:
1、f:是要调用的函数
2、o:是 f 函数中this指向的对象
3、para1,para2,...:是调用 f 函数时传入的实参
4、apply和call区别:传入 f 中 实参形式不同,call实参形式是o之后的所有以逗号分隔的参数,apply实参形式是o之后的一个数组。
5、所谓的call或apply返回值:是 f 函数的返回值
如有不正确之处,欢迎指正。