簡體   English   中英

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)); with alert(typeof(window[$("#ObjectType").val()]));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM