代码之家  ›  专栏  ›  技术社区  ›  Johan

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

  •  0
  • Johan  · 技术社区  · 12 年前
    var Foo = (function () {
    
        var foo = function() { };
    
        var privateMethod = function(){ };
    
        foo.prototype = {
            init: function() { 
                console.log(this.privateMethod); //undefined
            }
        };
    
        return foo;
    
    })();
    

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

    有什么方法可以使用指针引用我的“私有方法”吗?

    2 回复  |  直到 12 年前
        1
  •  2
  •   bfavaretto    12 年前

    你不能。您只能使用 this 指的是“公共”方法。如果您真的想使用 something.method 符号,您可以使用:

    var Foo = (function () {
    
        var foo = function() { };
    
        var private = {
           privateMethod : function(){ };
        }
    
        foo.prototype = {
            init: function() { 
                console.log(private.privateMethod); 
            }
        };
    
        return foo;
    
    })();
    
        2
  •  2
  •   Ted Hopp    12 年前

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

    console.log(privateMethod());