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"; }
}
}();