Javascript对象名称使用问题..我想

时间:2011-08-05 14:19:15

标签: javascript

所以我正在使用私有和公共方法设置一个对象。基本上使用以下格式:

var Utility = function() {
    var prive1, priv2, priv3;
    function privateMethod1() { //do something }

    return {
        publicFunc1: function() { //do something different }
        publicFunc2: function() { //do something else }
    }
}

但是我担心我遇到的一些情况,其中publicFunc2需要调用publicFunc1。例如,我将这样做的方式是:

publicFunc2: function() { Utility.publicFunc1(); //then do something else }

这样好吗?它运行,但它似乎很奇怪,VS2010不给我。我相信,如果有人要改变这条线     var Utility = function(){ - >到 - > var Utility2 = function(){} 然后基本上所有东西都会从对象内部被打破,这似乎是错误的...... 但我对实际应该改变的东西感到茫然。 我应该将所有方法基本上设为私有,然后映射到公共函数吗? EX:

{
    function privateFunc1() {}

    return {
        publicFunc1 : privatefunc1
    }
}

或者我应该采用完全不同的方法来实现私有和公共方法和变量的想法吗?

3 个答案:

答案 0 :(得分:1)

return {
    publicFunc1: function() {  },
    publicFunc2: function() { this.publicFunc1()  }
}

答案 1 :(得分:0)

在这种情况下,请记住YAGNI(您不需要它)的概念。当然,考虑一下组织事物的最佳方法,但现在是最初的代码,然后在需要时重构它。

这些功能是否需要公开,或者您是否在猜测以后可能需要的功能?将它们设为私有,暂时使用单一的公共方法。如果需要,稍后重构。保持简单。

答案 2 :(得分:0)

如果你想调用某个函数 - 给它起一个名字并用它来命名:

var Utility = function() {
    var prive1, priv2, priv3;
    function privateMethod1() { //do something }

    function Func1() { //do something different }
    function Func2() { Func1(); //do something else }

    return {
        publicFunc1: Func1,
        publicFunc2: Func2
    };
}

按名称调用本地函数总是比JS中的任何其他调用方法快。