CNode

知道模块名称,如果获得模块对象?

Ggemini发布于14 年前最后回复14 年前8 回复5237 浏览0 收藏

simple case as follows: 1.这样是ok的 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);

2.如果我想传的是字符串(模块名称),然后如何得到这个这个模块的对象? 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);

js新手,或许不是什么复杂问题,还望路过的各位指教一二,非常谢过~~

查看回复

回复 (8)

I
italkboy#1·14 年前

可以使用eval哦: var obj = eval(obj_name);

L
leizongmin#2·14 年前

没看懂神马意思。载入模块用require(name)

G
gemini#3·14 年前
引用 italkboy可以使用eval哦: var obj = eval(obj name);

it works. extremely grateful to you~~

G
gemini#4·14 年前
引用 leizongmin没看懂神马意思。载入模块用require(name)。

大概是这样的,我是学习到了util.inspect(object, [showHidden], [depth], [colors])这个函数,然后练习的时候,误传了一个字符串(object string)到了本该是对象object的位置,然后就没得到正确结果。

然后就想到应该有个东西可以由对象名称得到对象object这样的一个函数或方法。

I
italkboy#6·14 年前
引用 italkboy可以使用eval哦: var obj = eval(obj name);

@gfh21cn js是解释型语言嘛,eval就很自然咯

D
DoubleSpout#7·14 年前

碰到这类问题我一般使用命名空间来解决。 var nameSpace = { 'util':function(args){ //do something } } var obj_name = 'util' nameSpace [ obj_name ]; //执行了util 函数,不用使用evil

如果是全局都要用的方法,可以利用 global 对象的命名空间 希望对你有所帮助。

参与回复
登录后即可参与回复。登录