私有成员对象包含函数

时间:2014-01-01 20:43:41

标签: javascript

在javascript中,我有一个包含函数的对象,并希望向其添加一个私有成员。 我怎么能这样做?

function function1 () {
    var function2 = function () {
        console.log("This is an actual function.");
    }

    function2.publicMember = 5;
    function2.privateMember = 7; 

    return function2;
}

我希望function1的用户无法访问privatMember。 我发现了这个问题,但我无法将其转化为我的情况,因为我的对象是一个函数:

How to add private variable to this Javascript object literal snippet?

谢谢!

2 个答案:

答案 0 :(得分:1)

将其包装成另外一个函数以创建新范围(即使用iife):

function function1 () {
     var function2 = (function(){
       var privateMember = 7; 
       return function () {
          privateMember ++; // do something with really private member
          console.log("This is an actual function.");
       }
    })();

    function2.publicMember = 5;

    return function2;
}

答案 1 :(得分:1)

声明需要访问它们的函数内的变量:

function function1 () {
    var publicMember = 5;
    var function2 = function () {
        var privateMember = 7;
        console.log("This is an actual function.");
    }

    return function2;
}

因此,function2可以在其自己的闭包(privateMember)和任何父作用域中看到变量。