现在,我正在使用这种方式:
window.Foo = {
alpha: function() {},
bravo: function(arg) {}
}
window.Bar = {
charlie: function(arg) {}
}
Foo.alpha()
Bar.charlie()
但我怀疑这不是“正确”做事的方式,因为(1)我的IDE在几个方面理解了我的意思(例如,如果我键入{{1,将不会自动完成函数名称) }}和(2)如果我遍历命名空间,然后只返回Foo.
,我得到typeof eachone
。
答案 0 :(得分:4)
此代码:
for(var key in window.Foo)
{
// Code
}
仅将属性的名称分配给变量key
,这是一个字符串。如果你需要
关联的对象(或函数),改为使用它:
for(var key in window.Foo)
{
var obj = window.Foo[key];
// Code using obj
}
正如Matthew Flaschen所说,JavaScript等动态语言难以解析,因此如果您的IDE不理解某些内容,请不要过于担心。
答案 1 :(得分:3)
如果您不需要私有变量,那就完全没问题了。动态语言很难解析,而你的IDE却没有得到它。
另一种选择,特别是如果你确实需要一个私有类字段,是:
window.Foo = new (function(){
var some_private;
this.alpha = function(){},
this.bravo = function(arg){// use arg and some_private}
})();
至于迭代,我怀疑你使用的是:
for(var key in window.Foo)
{
print(typeof key);
}
尝试:
for(var key in window.Foo)
{
print(typeof window.Foo[key]);
}
答案 2 :(得分:2)
试试这个。也许你的IDE会正确处理它
var Foo = {
test: function() {},
test2: function() {}
};
for(var prop in Foo) {
console.log(typeof Foo[prop]); // Will log 'function'
}
window.Foo = Foo;