javascript中实现反射
今天在群里有人问这样一个问题:
string name = "xxx";
string key = ???;
Console.Write(key);//输出name
问号处怎么写?三句代码的问题,想要实现可不容易啊,而且这位仁兄问的是如何用C#来实现,学过C#的人都知道,C#是强类型语言,在.NET里,可以使用System.Reflection.Assembly.Load来实现反射。不过这里我觉得没有确定类型,用反射冒似也无法实现(不确定,有时间去复习一下MSDN),好久没有折腾过C#了,一直在玩前端,第一反应就是用JS来实现这位仁兄的问题,尽管不是他想要的,嘿嘿。没关系,我自己写着玩儿。
<script type="text/javascript">
var name = "superman";
var key = (function() {
for (var item in window) {
if (window[item] === "superman") {
return item;
}
}
})();
alert(key);
</script>
这样就实现了反射功能,在.NET中反射是很耗性能的,在Javascript里,不太懂它的引擎,故也不清楚性能有否影响。我想性能耗费应该等于0(直觉),嘿嘿。
太多东西需要学了,多记录成长点滴,欢迎拍砖。欢迎讨论!
var name = “superman”;var key = (function() { for (var item in window) { if (window[item] === “superman”) { return item; } }})();alert(key);
建议改成这样~
var name = “superman”;var key = (function() { for (var item in this) { if (window[item] === “superman”) { return item; } }})();alert(key);
var name = “superman”;var key = (function() { for (var item in window) {
if (window[item] === “superman1″) //这样的话就报错
{ return item; } }})();alert(key);
不好意思 我搞错了 if (window[item] == “superman1″) 两个等于号就报错,请问三个等于号什么意思??
是比较引用么