I have been working with the module pattern in JavaScript and have a question about scope and square bracket notation (SBN).
Please consider the following simple example.
(function (module) {
    function myMethod(text) {
        console.log(text);
    }
    module.init = function (name) {
        // here I want to do something like 
        // eval(name)("hello");
        // using SBN, e.g.
        ..[name].call(this, "hello"); 
    };
})(window.Module = window.Module || {});
Module.init("myMethod");
From within the init function is it possible to call myMethod using SBN?
You can put all of your methods into an object.
function myMethod(text) {
    console.log(text);
}
var methods = {myMethod: myMethod, ... };
module.init = function (name) {
    // here I want to do something like 
    // eval(name)("hello");
    // using square bracket notation.
    if(methods.hasOwnProperty(name)){
        methods[name].call(this, "hello"); 
    } 
    else {
        // some error that the method does not exist
    }
};
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With