1

特定のオブジェクト/関数が実行時に利用可能かどうかをユーザーが検出できるようにする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" />テストするオブジェクトを入力し、ボタンをクリックしてテストできるテキストボックスが必要です。これにより、ドキュメントを編集し続ける必要がなくなります。これは可能ですか?私が使用できる反射に似たものはありますか?

4

2 に答える 2

3

これは、JavaScriptオブジェクトのプロパティが実際には連想キーと値のペアであるために可能です。つまり、はとobj.property同等obj['property']です。

これを問題に適用すると、次のコードが機能します。

alert(typeof(window[$('#ObjectType').val()]));

これが機能するのは、すべての「グローバル」変数が実際にはwindowオブジェクトのプロパティであるためです。

于 2012-08-22T11:21:00.040 に答える
1

を実行すると、文字列化されたクラス名からオブジェクトを取得できますwindow[className]。これを使用するには、入力テキストボックスからクラス名の文字列値を取得し、クラス名からオブジェクトを取得して、それに対してtypeofを呼び出します。

コードを同じに保つには、次のように置き換えますalert(typeof(HTMLCollection));alert(typeof(window[$("#ObjectType").val()]));

于 2012-08-22T11:26:54.233 に答える