Node JS如何将String转换为Object

时间:2014-08-20 07:27:44

标签: javascript node.js object

exampleCode是:

// 4. execute tower.init latter read from bellow (1)
tower={
  init:function(){ console.log('horee im here now, finaly after a day code');}
}

// 3. app object
app ={ 
  publish:function(what,data){
     data.nextModule.init();
  }
}
// 2. then call this funct
var fires = function(){
   return app.publish('subscriber',{ nextModule : 'tower'});
}
// 1. execute this first
fires();

解释问题

  • 当我解雇时fires() 1.
  • 2. isfine app.publish('text',{nextModule:'tower');
  • 绕过3. app.publish(text,data)

我的问题是

我想转换data.nextmodule - >到对象或函数 然后调用塔模块.init()

data.nextModule.init()无法执行,因为nextModuleString

如何使此代码像这样运行

data.'tower'.init();

我已阅读此参考资料

Houshalter的回答 converting an object to a string!不是对象的字符串

可以节点js 吗? 我们转换为对象可以像JSON.stringify(data)一样简单吗?

终端上的更新错误

         throw err;
            ^
 TypeError: Object tower has no method `init`

2 个答案:

答案 0 :(得分:2)

两件事,首先将标识符new更改为其他内容。

第二,

data.newxtModule是一个表示脚本中变量的字符串。所有变量都是GLOBAL对象的一部分。因此,您可以通过将字符串格式的变量名称传递给GLOBAL对象来检索该变量。你可以打电话给init()塔。

只需更改此行,

data.nextModule.init();

要,

GLOBAL[data.nextModule].init();

最终代码应如下所示。

// 4. execute tower.init latter read from bellow (1)
tower={
  init:function(){ console.log('horee im here now, finaly after a day code');}
}

// 3. app object
app ={ 
  publish:function(what,data){
     GLOBAL[data.nextModule].init();
  }
}
// 2. then call this funct
var new1 = function(){
   return app.publish('subscriber',{ nextModule : 'tower'});
}
// 1. execute this first
new1();

这是Fiddle

答案 1 :(得分:1)

将'塔'改为塔。

顺便说一句,你最好不要使用关键词'new'。