【问题标题】:Convert namespace to string将命名空间转换为字符串
【发布时间】:2013-04-01 03:24:41
【问题描述】:

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

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

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

【问题讨论】:

  • 你能发布一个简单的例子吗?
  • 什么是mynamespace
  • 如果你只有一个对象Foo.Bar.Baz的引用,那就没办法了。如果你有对根的引用,你可以递归地遍历命名空间来找到对象(并跟踪属性名称),但这听起来效率不高。
  • @Blender:看起来像什么......命名空间本身?每个部分都只是一个 javascript 模块,包含大量函数、变量、“私有”内容、闭包等。
  • @Jamiec: var mynamespace = Foo.Bar.Baz;

标签: javascript javascript-namespaces


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多