简体   繁体   中英

Javascript error, not recognizing function… why?

This is my code (in a firefox addon)

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

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.

You can use the bind() [docs] method to bind the desired context and argument for the callback.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM