Javascript 在实例化类并向其传递数据时定义唯一的全局函数?

Javascript 在实例化类并向其传递数据时定义唯一的全局函数?,javascript,Javascript,我正在使用一个API,它的回调需要一个全局函数 我在一个类中定义了回调,这个类可以在同一个页面上实例化多次 SubmitForm = function(el) { this.el = $(el); }; SubmitForm.prototype.api = function(){ grecaptcha.render(this.el,{ 'sitekey' : '6Lfk4SATAAAAAMsKUioOBFfgcLr_tERuvbsr3pun', 'call

我正在使用一个API,它的回调需要一个全局函数

我在一个类中定义了回调,这个类可以在同一个页面上实例化多次

SubmitForm = function(el) {
    this.el = $(el);
};

SubmitForm.prototype.api = function(){
    grecaptcha.render(this.el,{
     'sitekey' : '6Lfk4SATAAAAAMsKUioOBFfgcLr_tERuvbsr3pun', 
     'callback': callbackFunction
   });
};
其中callbackFunction引用函数
窗口。callbackFunction

如何为类的每个实例创建一个唯一的全局回调函数,并将
this.el
传递给该函数

我在想,也许可以将函数命名为随机数,但不确定是否可以以某种方式将
this.el
传递到该函数中

SubmitForm = function(el) {
    this.el = $(el);
    this.rand = Math.random();
};

SubmitForm.prototype.api = function(){
    grecaptcha.render(this.el,{
     'sitekey' : '6Lfk4SATAAAAAMsKUioOBFfgcLr_tERuvbsr3pun', 
     'callback': callbackFunction
   });
};

window[this.rand] = function(this.el){
   ...
}

您可以创建一个包含所有函数的对象,如

window.myCallbackFunctions = new Object();
然后向类中添加一个静态变量,计算实例数

SubmitForm.instanceCount
您为每个新实例分配一个新的callbackfunction

window.myCallbackFunctions[SubmitForm.instanceCount] = function(obj) {};

你不能直接通过“this.el”。这必须通过回调来完成

您的示例中没有任何内容会给人这样的印象,即回调必须是全局的,如果是GoogleRecaptcha,我确信它不需要是全局的。是什么让你认为它需要是全局的?我如何在grecaptcha.render中引用此回调,这必须引用全局函数?@Himmators:“我如何在grecaptcha.render中引用此回调,这必须引用全局函数?”我保证不会。指向你认为它确实存在的文档,我会解释你误读了什么。比如“回调”:window.myCallbackFunctions[SubmitForm.instanceCount],但正如@T.J.Crowder指出的,我不认为它必须是一个全局函数