Javascript 将命名空间转换为字符串

Javascript 将命名空间转换为字符串,javascript,javascript-namespaces,Javascript,Javascript Namespaces,我使用显示模块模式,并有一个名称空间Foo.Bar.Baz 如何将其转换为字符串“Foo.Bar.Baz” (如果我使用mynamespace.toString()它将生成“[object object]”,而不是所需的字符串。)使用以下非常简化的验证: 您可以在显示的对象中包括对toString的覆盖: var revealed = function(){ var a = [1,2,3]; function abc(){ return (a[0]*a[1])+a[2];

我使用显示模块模式,并有一个名称空间
Foo.Bar.Baz

如何将其转换为字符串
“Foo.Bar.Baz”


(如果我使用
mynamespace.toString()
它将生成
“[object object]”
,而不是所需的字符串。)

使用以下非常简化的验证:

您可以在显示的对象中包括对
toString
的覆盖:

var revealed = function(){
   var a = [1,2,3];
   function abc(){
     return (a[0]*a[1])+a[2];
   }

   return {
      name: 'revealed',
      abcfn: abc,
      toString = function(){ return "revealed"; }
   }
}();

然后可以使用您第一次尝试的
discovered.toString()
调用此函数。如果显示的对象包含子对象(名称空间),则每个
toString
实现都可以调用子对象的
toString
,并用点连接(或任何适当的方式).

你能给出一个简单的例子吗?什么是
mynamespace
?如果你只引用了对象
Foo.Bar.Baz
,那就没有办法了。如果有对根的引用,则可以在命名空间上递归迭代以查找对象(并跟踪属性名),但这听起来效率不高。@Blender:。。。名称空间本身?每个部分只是一个javascript模块,包含大量函数、变量、“私有”内容、闭包等@Jamiec:
var mynamespace=Foo.Bar.Baz
var revealed = function(){
   var a = [1,2,3];
   function abc(){
     return (a[0]*a[1])+a[2];
   }

   return {
      name: 'revealed',
      abcfn: abc,
      toString = function(){ return "revealed"; }
   }
}();