node.js如何实现类似java中的反射机制?不用eval
发布于 12 年前 作者 shinka 14072 次浏览 最后一次编辑是 8 年前

RT 求解

25 回复

为啥不用eval?

因为不够好 具体原因网上有不少的

java中的反射是神马样的?

像是PHP中的 $p = ‘ppppp’; $thisp = ‘p’; $$thisp ??

@shinka 不好也得用。木有别的办法

可否把具体需求说一下啊,反射机制听得很空啊,而且cnodejs club中用java的人也不是全部吧

javascript本来就是动态语言,根本不需要反射 比如,java中动态获得的某对象的某属性需要用反射 但是,javascript中,只需要一个中括号 var obj = {a:“b”}; alert(obj[“a”]);

反射方法名

嗯 这个我知道 我是想问下 比如var funcName = “getItems”; getItems是一个Function名称,怎样不用eval去执行getItems()这个函数

也许就是你说的意思吧 在下不懂php

比如var funcName = “getItems”; getItems是一个Function名称,怎样不用eval去执行getItems()这个函数

比如var funcName = “getItems”; getItems是一个Function名称,怎样不用eval去执行getItems()这个函数

@shinka 楼下(#6楼)已经说了,大多数情况都可以 。 另外,我不解为什么不能用 eval

@shinka 给你举个例子, var obj = { getItems: function(str) { alert(str); } }; var funcName = “getItems”; objfuncName; //获得了属性之后,()表示执行这个属性

@shinka 其实各位大神说的挺明白的,通过obj[]实现,在普通游览器下:

var funcName = 'getItems';
window[funcName]();

//这个等同于

getItems();

@151263 恕我愚笨 看了例子才反应过来 谢谢

@cony138 嗯嗯 这下看懂了 谢谢啊~

@leizongmin 嗯 搞懂了 eval有一些弊端 之前看到过现在记不得了 下次若是想起来再跟哥们说吧

@shinka javascript中没有像java那样严格的语法和一些好用的东西,关于反射,java内部实现也是通过集合来完成的,依据此可以用js来模拟。只要将类、方法的名字存储在这个公共集合中集合,需要的时候,通过名字就能取出你要的类或者方法,这种模拟方式dojo和extjs都有类似的实现。

@a272121742 哇塞 谢谢啊 学到老 活到老

@shinka 他说的是php中的字符串变量,跟php的反射表面上没有关系。

12 年的帖子… 话说,动态语言也没有反射这个概念吧…

反射什么啊?需要什么require一下就可以啊

回到顶部