Javascript 如何获取当前函数对象引用
如果我打电话Javascript 如何获取当前函数对象引用,javascript,function,reference,Javascript,Function,Reference,如果我打电话 itself.bind = function (object, method, callback, context, args, includeEventArgs) { var handler, originalArgLen; args = args.slice(0, arguments.length); originalArgLen = args.length; context = context || null; handler = function
itself.bind = function (object, method, callback, context, args, includeEventArgs) {
var handler, originalArgLen;
args = args.slice(0, arguments.length);
originalArgLen = args.length;
context = context || null;
handler = function () {
if (includeEventArgs) {
for (var i = arguments.length - 1; i >= 0; i--) {
args.push(arguments[i]);
}
}
callback.apply(context, args);
};
handler.userArgsLength = originalArgLength;
object[method] = handler;
};
我希望能够从
doDrawFunc
中访问userArgsLength
您正在查找参数.callee.caller.userArgsLength
- 是对
的引用doDrawFunc
- 是调用它的函数(
)处理程序
是该函数对象的属性.userArgsLength
Edit:我认为没有任何方法可以避免
参数。被调用方
不更改主函数。无论如何,您可能应该将回调需要访问的任何内容作为参数传递给该回调函数。您甚至可以将handler
作为参数传递。将handler.userArgsLength的赋值移到较早的点,将其推到应用数组堆栈上,然后bam,您可以假定它是最终参数
不知道为什么要使用arguments.callee;据我所知,如果你不小心的话,像那样向后移动会变得非常慢。谢谢你的回答;但是,arguments.callee在某些javascript实现中不推荐使用。是否有方法避免以下JSLint错误:第42行的问题字符7:avoid arguments.callee。arguments.callee.caller.matchCase=matchCase@user562688:将回调中需要的任何内容传递到函数参数中。在发布问题之前,我考虑过这个答案,但这对我不起作用:我不希望这个库的用户对额外的参数感到惊讶。例如,我希望用户能够将函数绑定为myFunc(expectedArg1,expectedArg2,…)而不是myFunc(userArgsLength,expectedArg1,expectedArgs2,…)。另外,我不想使用callee,因为它在某些版本的javascript中已被弃用。有没有办法做我想做的事
TOOL.bind(canvas, "onmouseover", doDrawFunc, [currentDrawingTool], true);