简体   繁体   中英

Javascript public variable/methods

I have JavaScript code as below;

var foo = (function() {
    //Private vars
    var a = 1;

    return {
        //Public vars/methods
        a: a,
        changeVar: function () {
            a = 2;
        }
    }
})();

Now I am not sure how the syntax for public vars/methods works ? Could you please corelate how just "returning" the vars/methods makes them as public ?

Thank you.

The value of the variable foo is actually the value returned by this function. Notice on the last line, the () , indicating that this function is evaluated immediately. By evaluating a function and assigning its return value to a variable, you are able to hide variables inside a local (function) scope, such that they are not accessible outside that scope. Only members on the returned object are accessible, but because any functions inside form a closure with their outer scope, you can still use local (hidden) variables.

An example of this would be to hide some local state and only allow access to it through a method:

var foo = (function() {
    //Private vars
    var a = 1;

    return {
        //Public methods
        getVar: function () {
            return a;
        },
        setVar: function (val) {
            a = val;
        }
    }
})();

Okay, you've returned an object in the anonymous function, which means that the object is assigned to foo . So you can access the object's properties like foo.a or foo.changeVar , but you can continue to let the private variables exist, within the function's scope. Can't help much without a more specific question.

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