如何获取当前的Function对象引用

20 javascript reference 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;
};
Run Code Online (Sandbox Code Playgroud)

假设我打电话

TOOL.bind(canvas, "onmouseover",  doDrawFunc, [currentDrawingTool], true); 
Run Code Online (Sandbox Code Playgroud)

我希望能够userArgsLength从内部访问doDrawFunc.

Ple*_*and 22

你在找arguments.callee.caller.userArgsLength.

  • arguments.callee是一个参考doDrawFunc.
  • .caller是调用它的函数(handler).
  • .userArgsLength 是该函数对象的属性.

编辑:我不相信arguments.callee没有改变你的主要功能有任何方法可以避免.无论如何,您可能应该将回调需要访问的任何内容作为参数传递给该回调函数.你甚至可以handler作为一个参数传入.

  • 谢谢你的回答; 但是,在一些javascript实现中不推荐使用arguments.callee. (2认同)