Javascript 我应该在哪里存储下划线.js迭代器?

Javascript 我应该在哪里存储下划线.js迭代器?,javascript,module,iterator,global-variables,underscore.js,Javascript,Module,Iterator,Global Variables,Underscore.js,假设我想要一些“全局”(用?描述),在那里我可以存储并访问以下功能: ?.parseInt = function (str) { return parseInt(str, 10); }; ?.selected = function (x) { return x.selected; }; 例如,使用map或filter在其他地方: var intArray = _.map(stringArray, ?.parseInt); var selection = _.filter(myObjsHavin

假设我想要一些“全局”(用
描述),在那里我可以存储并访问以下功能:

?.parseInt = function (str) { return parseInt(str, 10); };
?.selected = function (x) { return x.selected; };
例如,使用
map
filter
在其他地方:

var intArray = _.map(stringArray, ?.parseInt);
var selection = _.filter(myObjsHavingSelectedAttribute, ?.selected);

我应该用什么来代替

可以选择创建自己的名称空间对象或使用现有的名称空间对象

在纯JS中创建您自己的命名空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用下划线名称空间这样的现有名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
或者,特定于下划线,您可以使其在下划线命名空间的顶层可用,也可以在下划线包装器对象上可用,如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用jQuery名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };

选择是创建自己的名称空间对象或使用现有名称空间对象

在纯JS中创建您自己的命名空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用下划线名称空间这样的现有名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
或者,特定于下划线,您可以使其在下划线命名空间的顶层可用,也可以在下划线包装器对象上可用,如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用jQuery名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };

选择是创建自己的名称空间对象或使用现有名称空间对象

在纯JS中创建您自己的命名空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用下划线名称空间这样的现有名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
或者,特定于下划线,您可以使其在下划线命名空间的顶层可用,也可以在下划线包装器对象上可用,如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用jQuery名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };

选择是创建自己的名称空间对象或使用现有名称空间对象

在纯JS中创建您自己的命名空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用下划线名称空间这样的现有名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
或者,特定于下划线,您可以使其在下划线命名空间的顶层可用,也可以在下划线包装器对象上可用,如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };
使用jQuery名称空间如下所示:

var myNamespace = myNamespace || {};
myNamespace.parseInt = function (str) { return parseInt(str, 10); };
myNamespace.selected = function (x) { return x.selected; };
_.parseInt = function (str) { return parseInt(str, 10); };
_.selected = function (x) { return x.selected; };
_.mixin({
    parseInt: function (str) { return parseInt(str, 10); },
    selected: function (x) { return x.selected; }
});
$.parseInt = function (str) { return parseInt(str, 10); };
$.selected = function (x) { return x.selected; };

你真的可以把它们放在你喜欢的任何地方

如果我正确理解了您的问题,那么您关心的基本上是处理名称空间

  • 如果它们被覆盖,则将其释放。在一个小项目中,这很容易管理,但如果有许多程序员在工作,并且每个人都喜欢将
    zzz
    用作全局对象,则某些人的函数将被覆盖

    你的代码

    zzz = {
      makeWorldPeace : function() { 
        // TODO: implement this 
      }    
    };
    
    你朋友的密码

    zzz = {
      makePizza : function() { 
        // ... 
      }
    };
    
    如果您尝试调用函数
    zzz.makeWorldPeace()
    ,您将得到一个
    TypeError
    ,它表示
    对象没有方法makeWorldPeace

  • 用类似的代码覆盖它们。与前面的示例相同,但这次您朋友的代码是

    zzz = {
      makeWorldPeace: function() {
        killAllHumans()
      }
    };
    
    这可能不是你的初衷

  • JavaScript中有许多名称空间模式。大多数人会尝试做以下事情来避免冲突

  • 为根对象选择一个好的名称<代码>\u utils,
    JSHelpers
    ,项目中唯一的东西
  • 始终使用
    var
    很好地管理变量范围
  • 如果你想做得好并且小心,确保你没有任何内存泄漏,或者你正在使用大块代码和其他大块代码,用这样一个自动执行函数包装东西

    (function(export){
       var intermediateFunction = function(){};
       var zzz = { /* all the things */ };
       export.zzz = zzz;
    })(window)
    
    console.log(intermediateFunction); // outputs: undefined
    

  • 希望有帮助。

    你真的可以把它们放在你喜欢的任何地方

    如果我正确理解了您的问题,那么您关心的基本上是处理名称空间

  • 如果它们被覆盖,则将其释放。在一个小项目中,这很容易管理,但如果有许多程序员在工作,并且每个人都喜欢将
    zzz
    用作全局对象,则某些人的函数将被覆盖

    你的代码

    zzz = {
      makeWorldPeace : function() { 
        // TODO: implement this 
      }    
    };
    
    你朋友的密码

    zzz = {
      makePizza : function() { 
        // ... 
      }
    };
    
    如果您尝试调用函数
    zzz.makeWorldPeace()
    ,您将得到一个
    TypeError
    ,它表示
    对象没有方法makeWorldPeace

  • 用类似的代码覆盖它们。与前面的示例相同,但这次您朋友的代码是

    zzz = {
      makeWorldPeace: function() {
        killAllHumans()
      }
    };
    
    这可能不是你的初衷

  • JavaScript中有许多名称空间模式。大多数人会尝试做以下事情来避免冲突

  • 为根对象选择一个好的名称<代码>\u utils,
    JSHelpers
    ,项目中唯一的东西
  • 始终使用
    var
    很好地管理变量范围
  • 如果你想做得好并且小心,确保你没有任何内存泄漏,或者你正在使用大块代码和其他大块代码,用这样一个自动执行函数包装东西

    (function(export){
       var intermediateFunction = function(){};
       var zzz = { /* all the things */ };
       export.zzz = zzz;
    })(window)
    
    console.log(intermediateFunction); // outputs: undefined
    

  • 希望有帮助。

    你真的可以把它们放在你喜欢的任何地方

    如果我正确理解了您的问题,那么您关心的基本上是处理名称空间

  • 如果它们被覆盖,则将其释放。在一个小项目中,这很容易管理,但如果有许多程序员在工作,并且每个人都喜欢将
    zzz
    用作全局对象,则某些人的函数将被覆盖

    你的代码

    zzz = {
      makeWorldPeace : function() { 
        // TODO: implement this 
      }    
    };
    
    你朋友的密码

    zzz = {
      makePizza : function() { 
        // ... 
      }
    };
    
    如果您尝试调用函数
    zzz.makeWorldPeace()
    ,您将得到一个
    TypeError
    ,它表示
    对象没有方法makeWorldPeace

  • 用类似的代码覆盖它们。与前面的示例相同,但这次您朋友的代码是

    zzz = {
      makeWorldPeace: function() {
        killAllHumans()
      }
    };
    
    这可能不是你的初衷

  • JavaScript中有许多名称空间模式。大多数人试图做以下事情来避免c