JavaScript将字符串解析为等效对象
JavaScript resolve string to equivalent object
我正在编写一个JavaScript实用程序,它允许用户检测特定对象/函数在运行时是否可用。这是源代码,这是有效的,但每次你想测试另一个对象时都需要编辑:
<!DOCTYPE html>
<html>
<head>
<title>HTML5 Template</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#TestObject').click(function() {
alert(typeof(HTMLCollection));
});
});
</script>
</head>
<body>
<input id="ObjectType" type="text" />
<input id="TestObject" type="button" value="Test" />
</body>
</html>
单击该按钮时,如果项目存在,则会显示一个警告,指示"对象"或"功能",如果不存在,则显示"未定义"。
我想要的是有一个文本框<input id="ObjectType" type="text" />
,我可以在其中键入要测试的对象,然后单击按钮进行测试,这将消除继续编辑文档的需要。这可能吗?有什么类似于反射的东西我可以使用吗?
这是可能的,因为JavaScript对象属性实际上是关联键值对,这意味着obj.property
等效于obj['property']
。
将此应用于您的问题,以下代码将起作用:
alert(typeof(window[$('#ObjectType').val()]));
这是因为所有"全局"变量实际上都是window
对象的属性。
您可以通过执行window[className]
从字符串类名中获取对象。我们将通过从输入文本框中获取类名的字符串值,从类名中获取对象,并对其调用typeof来使用它:
保持代码不变,只需将alert(typeof(HTMLCollection));
替换为alert(typeof(window[$("#ObjectType").val()]));
相关文章:
- 如何使用jquery读取对象字符串
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- Javascript对象字符串值-在应该隐藏的时候呈现的HTML代码
- 在Nodejs中将数组转换为类似子的对象字符串
- 对象字符串转换为JSON(抛出错误)
- 如何将事件对象字符串化
- 如何在 JavaScript 中将 JSON 对象字符串化为负零
- 将 JSON 对象字符串数组转换为 JS 对象数组
- 如何在角度转换请求中将对象字符串转换为 JSON 对象
- 删除开头的双引号&结束于JSON对象/字符串或Java脚本变量
- 将json对象字符串转换为值
- 如何迭代json对象字符串
- 将数组列表转换为json对象字符串
- 如何将继承的对象字符串化为JSON
- 如何按对象字符串值之一对对象数组进行数字排序
- 解析日期对象字符串并获取以毫秒为单位的时间
- 如何在javascript中解析javascript对象字符串
- Javascript类对象字符串到对象
- 从使用.data()添加的对象字符串中获取值
- 如何在javascript中添加一个函数变量到对象字符串