知道模块名称,如果获得模块对象?
发布于 12 年前 作者 gemini 4566 次浏览 最后一次编辑是 8 年前

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新手,或许不是什么复杂问题,还望路过的各位指教一二,非常谢过~~

8 回复

可以使用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这个概念,你这个方法也能解决

回到顶部