我在一个文件夹中有两个不同的JS文件。我给第一个JS文件命名空间
var fooMYNS = {};
并使用该命名空间声明了一些变量
fooMYNS.newAr = new Array();
。现在我推送数组中的一些元素说{1,2,3,4}
。
我想在第二个JS文件中使用这个数组细节。我怎么能使用这个命名空间来做到这一点。
注意:仅在第一个JS文件之后调用/执行第二个,因此完成了数组赋值。
或者我们可以在没有命名空间的情况下完成吗?任何建议都被接受。感谢。
答案 0 :(得分:0)
当两个文件都包含在页面中时,在任何对象之外用var声明的任何内容都包含在全局命名空间中,并且可以在任何地方访问。您应该可以从页面的任何位置轻松访问fooMYNS。
查看此其他问题/答案:How do I declare a namespace in JavaScript?
然而,我已经看到明确声明应该共享的内容的一种非常好的方式来自node.js并在Coffeescript中得到很好的实现如下所述:How do I define global variables in CoffeeScript?
root = exports ? this
root.foo = -> 'Hello World'
Coffeescript会自动将所有单个文件包装在一个闭包中,这实际上可以帮助您不会污染全局javascript命名空间。因此,它会强制您使用上面的习惯用法来公开您想要的确切API。
上面的代码首先检查导出(node.js全局),否则使用闭包范围(this)并显式地将方法(foo)附加到该全局空间。
现在在任何其他文件中,foo
将是全局可访问的,但其他任何未显式为全局的内容都不会。
答案 1 :(得分:0)
这假设您的问题中至少有一个拼写错误 - {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]