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

时间:2016-05-28 09:53:51

标签: javascript

我正在使用一个API,它需要一个全局函数才能进行回调。

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

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

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

callbackFunncton引用函数window.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){
   ...
}

1 个答案:

答案 0 :(得分:0)

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

window.myCallbackFunctions = new Object();

然后在您的类中添加一个静态变量来计算实例

SubmitForm.instanceCount

您为每个新实例分配一个新的回调函数

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

你无法通过"直接" this.el"。这必须通过回调来完成。