回调函数

arguments.callee.length 返回实参个数
arguments.length 返回形参个数
arguments.callee 返回当前被调用方法的引用,通过此引用可以实现回调
函数名.caller 返回当前函数被谁调用,如果调用者是window则返回null,是其他函数调用当前函数则返回其他函数的引用

回调函数就是作为参数传递到其他函数中执行,与普通参数传递没有太大区别,主要注意的地方就是回调时作用域this的变化会导致结果不一致,如果想要保护this指向,可以通过apply或call来指定this对象
apply(thisArg,argArray);
call(thisArg[,arg1,arg2…] ]);
,apply(绑定到哪一个对象上,[参数]),第一个参数就是指定回调函数的作用域对象,后面的数组为回调需要的参数,call与apply类似,只是传递参数采用可变参数形式而非数组形式,应用call和apply还有一个技巧在里面,就是用call和apply应用另一个函数(类)以后,当前的函数(类)就具备了另一个函数(类)的方法或者是属性,这也可以称之为“继承”。

apply调用和call调用与普通函数调用差不多,如function a(){},调用函数a可以有3中方式,a(),a.apply(thisObj,[]),a.call(thisObj,...),只不过apply和call可以指定作用域,而直接调用不能绑定作用域

原文地址:https://www.cnblogs.com/javabg/p/7700152.html