javascript - 命名空间的差异

标签 javascript performance namespaces

我正在考虑不同类型的命名空间,并想知道最好使用哪种。

我个人使用以下内容:

var App = {

    foo: function(){},
    bar: function(){}

}

但我注意到一些大师正在使用一些不同的技术,我想知道为什么要采取额外的步骤。

 var app = app || {}

这样做是出于必要还是出于复杂性?您建议使用哪一个?

最佳答案

您所询问的构造本身与命名空间无关。这只是一种不破坏现有值(或命名空间,如果你愿意的话)的方法。

如果您认为 App 可能已经存在,并且您不想用您的实现覆盖它,则可以使用如下内容:

var App = App || {};
App.foo = function(){};
App.bar = function(){};

当然,如果App确实存在,并且具有属性foo和/或bar,您将破坏那些。

适当的命名空间允许调用者决定调用什么内容。例如,假设您的项目想要导出 App。但是如果调用者已经在使用App怎么办?现在他们有责任更改名称。更好的方法是让他们决定如何调用它。 Node 中的命名空间是这样工作的:

var http = require('http');
var myHttp = require('http');

httpmyHttp 都是 http 包的实例,但调用者可以决定它们实际的名称。

Browserify ( https://github.com/substack/node-browserify ) 项目允许在浏览器中使用 Node 样式的包,这非常方便。它似乎变得很受欢迎。

关于javascript - 命名空间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21718988/

相关文章:

javascript - 我如何在不更改 window.location 的情况下在 ember.js 中重定向用户

python - 如何提高 Excel 中 xlwings UDF 的速度?

ruby - 从大文件中查找目标字符串

java - 在 Java 方法中使用大括号会降低性能吗?

php - 使用命名空间时找不到 SimpleXMLElement

JavaScript 读取 IE 和 FireFox 中的单选按钮值

javascript - 如何在 Highcharts 中获得 colorByPoint 外观,而不用将组中的所有条形着色为相同颜色?

ruby-on-rails - 我可以在新的 Rails 应用程序中使用通用 namespace 吗?

php - 使用/导入 Laravel facades 的正确方法是什么?

javascript - 更改所选元素的颜色