1

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

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

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

4

1 回答 1

2

使用非常简化的Revealing 模块模式

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并与点(或任何合适的)连接。

于 2013-04-09T15:47:10.400 回答