// 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. app.publish('text',{nextModule:'tower');
app.publish(text,data)
我想转换data.nextmodule
- >到对象或函数
然后调用塔模块.init()
data.nextModule.init()
无法执行,因为nextModule
为String
data.'tower'.init();
Houshalter的回答 converting an object to a string!不是对象的字符串
可以节点js 吗?
我们转换为对象可以像JSON.stringify(data)
一样简单吗?
throw err;
^
TypeError: Object tower has no method `init`
答案 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'。