Javascript中的NameSpaces-将其用于两个不同的JS文件

NameSpaces in Javascript - Using it for Two diff JS files

本文关键字:两个 文件 JS NameSpaces- 中的 用于 Javascript      更新时间:2023-09-26

我在一个文件夹中有两个不同的JS文件。我给了第一个JS文件一个名称空间var fooMYNS = {};,并使用该命名空间声明了一些变量CCD_ 2。现在我推送了数组中的一些元素,比如{1,2,3,4}。我想在第二个JS文件中使用这个数组的详细信息。我如何使用这个名称空间来完成它。

注意:第二个只在第一个JS文件之后调用/执行,所以数组赋值已经完成。

或者我们可以在没有名称空间的情况下做到这一点?我们接受任何建议。谢谢

当两个文件都包含在页面中时,任何对象之外用var声明的任何内容都包含在全局命名空间中,并且可以在任何地方访问。您应该能够从页面上的任何位置轻松访问fooMYNS。

看看另一个问题/答案:如何在JavaScript中声明命名空间?

然而,我看到的一种非常好的显式声明应该共享的东西的方法来自node.js,并在Coffeescript中得到了很好的实现。如下所述:我如何在Coffeescript中定义全局变量?

root = exports ? this
root.foo = -> 'Hello World'

Coffeescapet自动将所有单独的文件包装在一个闭包中,这确实有助于避免污染全局javascript命名空间。因此,它迫使您使用上面的习惯用法,只公开您想要的API。

上面的代码首先检查导出(node.js全局(,否则使用闭包范围(this(并显式地将方法(foo(附加到该全局空间。

现在,在任何其他文件中,foo都将是全局可访问的,但任何其他未明确设置为全局的文件都将不可访问。

这假设您的问题中至少有一个拼写错误-{1,2,3,4}既不是有效的数组,也不是有效的对象。

第一个文件:

var fooMYNS = {};
fooMYNS.newAr = []; // It's faster to use an empty array than the Array constructor.
fooMYNS.newAr = [1,2,3,4]; // Not sure what happens before this that you can't just assign these values to the array in the first place.

第二个文件:

console.log(fooMYNS.newAr); // This outputs to the browser console [1,2,3,4]