为什么要调用此函数?

时间:2013-08-29 14:14:07

标签: javascript

我正在尝试修改框架JavaScript的某些行为。在 View source 下拉列表中的IE10开发人员工具中,有一个名为 Dynamic Sc​​ripts 的文件夹。 (也许有人可以解释动态脚本是什么?)并且功能代码(1089)下面有以下代码
这是代码:

function anonymous() {
var f=arguments.callee; return f._func.apply(f._owner, arguments);
}

调用堆栈的第一个条目是

Function code, Function code (1089), line 2

此行多次执行。但我不知道为什么。

谁叫这行?

1 个答案:

答案 0 :(得分:0)

anonymous函数调用并不意味着名为anonymous的函数。它实际上是一个用于对未命名函数进行分类的名称,如下所示:

var anUnnamedFunc = function() {
    return true;
};

如果您在监视或控制台输出中引用了此函数,它将被转储为匿名函数。要定义非匿名函数,可以使用:

var aNamedFunc = function namedFunction() {
    return true;
};

有问题的函数看起来很像bind函数。这是一个包装函数,用于创建一个将参数和/或上下文绑定到另一个函数的函数。但是,此版本使用某种私有属性机制来绑定参数:

var bind = function() {
    var f = arguments.callee;
    return f._func.apply(f._owner, arguments);
};

我实际上看不到这种函数会用于什么,所以想知道它是否只是IE调试器的异常。尝试使用其他浏览器,看看该功能是否出现在配置文件报告中。