跳到主要内容
CNode

node.js如何实现类似java中的反射机制?不用eval

社区
Sshinka发布于 14 年前最后回复 12 年前
25154220

RT 求解

查看回复

回复 (25)

D
dlutwuwei#2512 年前

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

Y
youxiachai#2412 年前

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

R
roychad7#2312 年前
引用 arrowing像是PHP中的 $p = 'ppppp'; $thisp = 'p'; $$thisp ??

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

A
a272121742#1914 年前
引用 151263javascript本来就是动态语言,根本不需要反射 比如,java中动态获得的某对象的某属性需要用反射 但是,javascript中,只需要一个中括号 var obj = {a:"b"}; ...

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

S
shinka#1814 年前
引用 leizongminjava中的反射是神马样的?

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

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

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

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

//这个等同于

getItems();
1
151263#1414 年前
引用 151263javascript本来就是动态语言,根本不需要反射 比如,java中动态获得的某对象的某属性需要用反射 但是,javascript中,只需要一个中括号 var obj = {a:"b"}; ...

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

L
leizongmin#1314 年前
引用 leizongminjava中的反射是神马样的?

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

S
shinka#1214 年前
引用 leizongminjava中的反射是神马样的?

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

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

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

S
shinka#1014 年前
引用 arrowing像是PHP中的 $p = 'ppppp'; $thisp = 'p'; $$thisp ??

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

S
shinka#914 年前
引用 151263javascript本来就是动态语言,根本不需要反射 比如,java中动态获得的某对象的某属性需要用反射 但是,javascript中,只需要一个中括号 var obj = {a:"b"}; ...

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

S
shinka#814 年前

反射方法名

1
151263#714 年前

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

C
cony138#614 年前

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

C
chinawomen#514 年前
引用 chinawomen为啥不用eval?

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

A
arrowing#414 年前

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

L
leizongmin#314 年前

java中的反射是神马样的?

S
shinka#214 年前
引用 chinawomen为啥不用eval?

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

C
chinawomen#114 年前

为啥不用eval?

参与回复

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