Javascript 从userscript中的匿名函数获取函数指针

Javascript 从userscript中的匿名函数获取函数指针,javascript,userscripts,Javascript,Userscripts,我是新来的,如果我英语说得不好,请原谅。我使用JavaScript已经1-3个月了,所以这里可能会有一些非常愚蠢的问题或想法。请告诉我哪里错了。谢谢你 我的userscript有一个问题:我需要从一个站点获取调用某些函数的指针。站点脚本的结构如下 (function(a, b) { var c = { d: true }; var e = function(f) { g(); } })(jQuery, window); 我需要访问

我是新来的,如果我英语说得不好,请原谅。我使用JavaScript已经1-3个月了,所以这里可能会有一些非常愚蠢的问题或想法。请告诉我哪里错了。谢谢你

我的userscript有一个问题:我需要从一个站点获取调用某些函数的指针。站点脚本的结构如下

(function(a, b) {
    var c = {
        d: true
    };
    var e = function(f) {
        g();
    }
})(jQuery, window);
我需要访问userscript中的
e
函数。有可能吗?如果不是,怎么能用其他方法呢?(我需要从脚本手动调用该函数)


请回答。谢谢。

因为您的
e
变量是在函数内声明的,既不是用作返回值,也不是赋值给函数外的任何对象,所以它是完全私有的。您无法从函数外部访问它

如果您愿意,您可以更改它,以便:

(function(a, b) {
    var c = {
        d: true
    };
    b.e = function(f) {
        g();
    }
})(jQuery, window).
在这里,我们将
e
指定为
window
上的属性(通过
b
参数间接指定)<代码>窗口属性是全局变量,因此现在您有了一个全局变量
e


(但我不推荐全局变量。)

据我所知,您所展示的是一种非常有效的方法,可以将变量/函数设置为“私有”——它们不能从外部访问。但是,如果将e设置为jQuery或window中的属性(
window
是包含所有全局变量的对象),则可以访问e


由于我怀疑您的目标是否与您指定的完全一致,您可能应该更仔细地调查它,以了解
e
发生了什么,以及它是否被分配到您可以使用它的某个位置。换句话说,我没有完整答案的所有信息。

旁注:在JavaScript中,它们被称为函数引用,而不是函数指针。我没有重写代码的权限(我只能创建userscript)。JS代码在网站上,谢谢你。告诉我,如果这个函数是从其他函数调用的,我能得到它吗?可能是stacktrace之类的?更准确地说:按钮附带了功能
a
a
是私有的)。当调用
a
时(按下按钮),从
a
调用
b
。我能从哪里得到它?显然,
a
有,但是…?@T.J.Crowder看看<代码>。。。VarB=函数(c){;}VarA=1;按钮。单击(function(){b(a);}).(在该匿名函数内)我可以通过从
\u数据('events')中提取
a
来获取对
b
的引用吗?我可以用其他方式得到它吗?如果没有,那么调用
b
的其他方法是什么?我无法复制它,因为它使用匿名函数的私有成员。JavaScript没有任何浏览器一致性的堆栈跟踪方法。您可能可以使用一些库模拟单击按钮,但根据您评论中给出的简短示例,我想不出任何方法来获取B。