将名称空间转换为字符

时间:2013-04-09 15:38:49

标签: javascript javascript-namespaces

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

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

(如果我mynamespace.toString()它会产生"[object Object]"而不是所需的字符串。)

1 个答案:

答案 0 :(得分:2)

使用Revealing module pattern

的非常简化的版本
var revealed = function(){
   var a = [1,2,3];
   function abc(){
     return (a[0]*a[1])+a[2];
   }

   return {
      name: 'revealed',
      abcfn: abc
   }
}();

您可以在显示的对象中包含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"; }
   }
}();

然后可以在您首次尝试时使用revealed.toString()调用此方法。如果您显示的对象包含子对象(名称空间),则每个单独的toString实现可以调用子项toString并使用点(或任何适当的)连接。