0

我有如下的 JavaScript 代码;

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

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

现在我不确定公共变量/方法的语法是如何工作的?您能否解释一下“返回”变量/方法如何使它们公开?

谢谢你。

4

2 回答 2

1

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

一个例子是隐藏一些本地状态并且只允许通过一个方法访问它:

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

    return {
        //Public methods
        getVar: function () {
            return a;
        },
        setVar: function (val) {
            a = val;
        }
    }
})();
于 2013-02-27T17:57:04.223 回答
0

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

于 2013-02-27T17:57:16.953 回答