Javascript 引用;“私人方法”;了结

Javascript 引用;“私人方法”;了结,javascript,Javascript,我知道我可以直接访问privateMethod,而无需使用this指针。但由于我来自c#world,我希望将其用于可读性目的 有什么方法可以使用指针引用我的“私有方法”吗?privateMethod并不特定于foo的每个实例。只需在不使用this.限定符的情况下引用它,尽管您可能希望记录函数调用的结果,而不是函数本身: var Foo = (function () { var foo = function() { }; var privateMethod = function

我知道我可以直接访问
privateMethod
,而无需使用
this
指针。但由于我来自c#world,我希望将其用于可读性目的


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

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

var Foo = (function () {

    var foo = function() { };

    var privateMethod = function(){ };

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

    return foo;

})();

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

var Foo = (function () {

    var foo = function() { };

    var privateMethod = function(){ };

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

    return foo;

})();

你不能。您只能使用
引用“公共”方法。如果您确实想使用
something.method
表示法,您可以使用:

console.log(privateMethod());

你不能。您只能使用
引用“公共”方法。如果您确实想使用
something.method
表示法,您可以使用:

console.log(privateMethod());

OP已经知道了。问题是,是否可以使用
this
@bfavareto引用“私有”方法(封闭变量)-OP已经知道了什么?OP当然不知道如何简单地消除
这个。
“我知道我可以直接访问privateMethod而不使用this指针。但是因为我来自c世界,我想使用它来提高可读性。”OP已经知道了这一点。问题是,是否可以使用
this
@bfavareto引用“私有”方法(封闭变量)-OP已经知道了什么?OP当然不知道简单地消除
这个。
“我知道我可以不使用this指针直接访问privateMethod。但是因为我来自c世界,所以我想使用它来提高可读性。”好吧,使用
原型
添加所有的foo方法,而不是创建“private”有什么意义吗方法,即使我只在“类”中使用它们?是的,这在原型继承中是有意义的。请记住,原型中的属性和方法是由所有实例共享的(这意味着,没有实例有自己的副本)。如果你想在一个特定的实例上设置一些属性值,你实际上是在创建一个本地属性,这个属性会在原型上产生阴影——是的,这可能会让人困惑……)但是在这种情况下,我知道我只会创建一个实例。对不起,我应该提一下。将我的方法转移到.prototype中是否仍然是一个好主意?如果它是一个单例,那么使用prototype将一无所获。只需将所有内容声明为
this.property
this.method
。实际上,您甚至可以使用对象文字来创建单例。好的,使用
prototype
添加所有的foo方法,而不是创建“private”方法,这有意义吗?即使我只在“class”中使用它们?是的,这在原型继承中是有意义的。请记住,原型中的属性和方法是由所有实例共享的(这意味着,没有实例有自己的副本)。如果你想在一个特定的实例上设置一些属性值,你实际上是在创建一个本地属性,这个属性会在原型上产生阴影——是的,这可能会让人困惑……)但是在这种情况下,我知道我只会创建一个实例。对不起,我应该提一下。将我的方法转移到.prototype中是否仍然是一个好主意?如果它是一个单例,那么使用prototype将一无所获。只需将所有内容声明为
this.property
this.method
。实际上,您甚至可以使用对象文字来创建单例。