在闭包中引用“私有方法”

时间:2013-03-28 17:23:19

标签: javascript

var Foo = (function () {

    var foo = function() { };

    var privateMethod = function(){ };

    foo.prototype = {
        init: function() { 
            console.log(this.privateMethod); //undefined
        }
    };

    return foo;

})();

我知道我可以直接访问privateMethod而不使用this指针。但由于我来自c#世界,我想将其用于可读性目的。

有没有办法使用指针引用我的“私有方法”?

2 个答案:

答案 0 :(得分:2)

privateMethod并非特定于foo的每个实例。只需在没有this.限定符的情况下引用它 - 尽管您可能希望记录函数调用的结果,而不是函数本身:

console.log(privateMethod());

答案 1 :(得分:2)

你不能。您只能使用this来引用" public"方法。如果您真的想使用something.method表示法,可以使用:

var Foo = (function () {

    var foo = function() { };

    var private = {
       privateMethod : function(){ };
    }

    foo.prototype = {
        init: function() { 
            console.log(private.privateMethod); 
        }
    };

    return foo;

})();