[英]Javascript error, not recognizing function… why?
This is my code (in a firefox addon) 这是我的代码(在Firefox插件中)
this.something_something = function (the_actual_url) {
this.this_version = null;
try {
// Firefox 4 and later; Mozilla 2 and later
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("parasites@maafire.com", function (addon) {
this_version = addon.version;
});
}
catch (ex) {
// Firefox 3.6 and before; Mozilla 1.9.2 and before
var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
var addon = em.getItemForID("parasites@maafire.com");
this_version = addon.version;
}
this.timervar = setTimeout(function () {
this.get_plugin_version(this.this_version);
}, 2000);
}
this.get_plugin_version = function (blah) {
alert("aa:" + blah);
}
I get the error: 我收到错误:
Error: this.get_plugin_version is not a function Source File: chrome://mf_monkey_project/content/overlay.js Line: 476 错误:this.get_plugin_version不是函数源文件:chrome://mf_monkey_project/content/overlay.js行:476
What am I doing wrong? 我究竟做错了什么?
Sorry about the screwed up formatting, but i deleted the bulk of the code to fit here and it made the formatting all screwy. 抱歉搞砸了格式,但我删除了大部分代码以适合此处,这使格式化变得很麻烦。
Because the setTimeout
callback will be executed in the global context. 因为setTimeout
回调将在全局上下文中执行。
You can use the bind()
[docs] method to bind the desired context and argument for the callback. 您可以使用bind()
[docs]方法为回调绑定所需的上下文和参数。
this.timervar=setTimeout( this.get_plugin_version.bind(this, this.this_version),
2000 );
If you don't want the current value of this.this_version
permanently bound as the first argument, then remove it from the .bind()
call. 如果您不希望this.this_version
的当前值永久绑定为第一个参数,则将其从.bind()
调用中删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.