[英]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));
with alert(typeof(window[$("#ObjectType").val()]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.