simple case as follows: 1.这样是ok的 <code> 1 #!/usr/bin/env node 2 3 var util = require(“util”) 4 var obj_name = util // 这里是一个对象 5 6 var obj_info = util.inspect(obj_name, true, null) 7 util.log(obj_info); </code>
2.如果我想传的是字符串(模块名称),然后如何得到这个这个模块的对象? <code> 1 #!/usr/bin/env node 2 3 var util = require(“util”) 4 var obj_name = “util” // 这里是一个字符串(模块名称) 5 var obj = get_object(obj_name) // 有没有只有一个函数?? 6 var obj_info = util.inspect(obj, true, null) 7 util.log(obj_info); </code>
js新手,或许不是什么复杂问题,还望路过的各位指教一二,非常谢过~~
可以使用eval哦: var obj = eval(obj_name);
没看懂神马意思。载入模块用require(name)
。
it works. extremely grateful to you~~
大概是这样的,我是学习到了util.inspect(object, [showHidden], [depth], [colors])这个函数,然后练习的时候,误传了一个字符串(object string)到了本该是对象object的位置,然后就没得到正确结果。
然后就想到应该有个东西可以由对象名称得到对象object这样的一个函数或方法。
js神奇的eval
@gfh21cn js是解释型语言嘛,eval就很自然咯
碰到这类问题我一般使用命名空间来解决。 var nameSpace = { ‘util’:function(args){ //do something } } var obj_name = 'util’ nameSpace [ obj_name ]; //执行了util 函数,不用使用evil
如果是全局都要用的方法,可以利用 global 对象的命名空间 希望对你有所帮助。
楼主想要的貌似是IOC这个概念,你这个方法也能解决