特定の名前のオブジェクトが存在するかどうかを実行時に検出する必要がありますが、この名前は文字列として変数に格納されます。
たとえば、私の Javascript には test という名前のオブジェクトがあり、実行時に「テキスト」という単語をボックスに書き込み、この文字列を変数に格納します。input という名前にしましょう。入力変数に格納された文字列で名前が付けられた変数が存在するかどうかを確認するにはどうすればよいですか?
特定の名前のオブジェクトが存在するかどうかを実行時に検出する必要がありますが、この名前は文字列として変数に格納されます。
たとえば、私の Javascript には test という名前のオブジェクトがあり、実行時に「テキスト」という単語をボックスに書き込み、この文字列を変数に格納します。input という名前にしましょう。入力変数に格納された文字列で名前が付けられた変数が存在するかどうかを確認するにはどうすればよいですか?
オブジェクトがグローバル スコープにある場合。
var exists = (typeof window["test"] !== "undefined");
ブラウザを使用している場合 (つまり、ノードではない場合):
var varName = 'myVar';
if (typeof(window[varName]) == 'undefined') {
console.log("Variable " + varName + " not defined");
} else {
console.log("Variable " + varName + " defined");
}
ただし、プロジェクトでこのコードを書くことを正当化するのは非常に難しいと思います。人々があなたのコードや何かにプラグインを書くことを期待しない限り、あなたが持っている変数を知っておくべきです。
if( window[input])...
すべてのグローバル変数はwindow
オブジェクトのプロパティです。[]
記法を使用すると、式によってそれらを取得できます。
グローバル変数として存在するかどうかを確認したい場合は、window オブジェクトのメンバー変数を確認できます。window はグローバル オブジェクトであるため、そのメンバーはグローバルです。
if (typeof window['my_objname_str'] != 'undefined')
{
// my_objname_str is defined
}
私は自分のコードを書いていますが、メソッドが存在するかどうかを常に知ることができるわけではありません。リクエストに応じてjsファイルをロードします。また、ajax 応答を「介して」オブジェクトをバインドするメソッドがあり、それらがデフォルトのコールバックを呼び出す必要があるかどうか、または特定のメソッドが利用可能かどうかを知る必要があります。したがって、次のようなテスト:
function doesItExist(oName){
var e = (typeof window[oName] !== "undefined");
return e;
}
私に適しています。