Javascript对象名称使用问题.我认为

Javascript object name usage issue.. i think

本文关键字:问题 对象 Javascript      更新时间:2023-09-26

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

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() {-> to -> var Utility2 = function() {}然后基本上所有东西都会从物体内部断裂,这似乎是错误的……但我不知道我应该改变什么。我应该使所有的方法基本上私有,然后映射到一个公共功能?例:

{
    function privateFunc1() {}
    return {
        publicFunc1 : privatefunc1
    }
}

或者我应该有一个完全不同的方法来实现私有和公共方法和变量的概念?

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

如果你想调用某个函数——给它一个名字,然后用这个名字调用它:

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中任何其他调用方法都要快。

在这种情况下,请记住YAGNI(您不需要它)的概念。当然,先考虑组织代码的最佳方式,然后在需要的时候进行重构。

这些函数需要公开吗?或者你是在猜测以后可能需要的功能吗?把它们设为私有,现在只有一个公共方法。如果需要,以后再重构。保持简洁。