Javascript公共变量/方法

时间:2013-02-27 17:54:12

标签: javascript oop

我有以下JavaScript代码;

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

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

现在我不确定公共变量/方法的语法是如何工作的? 你能否解释如何“回归”变量/方法使它们成为公众?

谢谢。

2 个答案:

答案 0 :(得分:1)

变量foo的值实际上是此函数返回的值。请注意最后一行(),表示立即评估此函数。通过计算函数并将其返回值赋给变量,您可以隐藏本地(函数)范围内的变量,以便在该范围之外无法访问它们。只能返回返回对象上的成员,但由于内部的任何函数形成了具有外部作用域的闭包,因此您仍然可以使用本地(隐藏)变量。

这方面的一个例子是隐藏一些本地状态,只允许通过以下方法访问它:

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

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

答案 1 :(得分:0)

好的,您已在匿名函数中返回了一个对象,这意味着该对象已分配给foo。因此,您可以访问对象的属性,如foo.afoo.changeVar,但您可以继续在函数范围内存在私有变量。没有更具体的问题就无济于事。