重複の可能性:
Javascript はオブジェクト名として変数を使用します
JS が文字列を以前に定義されたオブジェクトへの参照として扱うようにするにはどうすればよいですか? 簡略化:
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = myString.myproperty;
重複の可能性:
Javascript はオブジェクト名として変数を使用します
JS が文字列を以前に定義されたオブジェクトへの参照として扱うようにするにはどうすればよいですか? 簡略化:
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = myString.myproperty;
変数がグローバル スコープにある場合は、グローバル オブジェクトのプロパティとしてアクセスできます。
var a = "hello world";
var varName = "a";
console.log( window[varName] ); // outputs hello world
console.log( this[varName] ); // also works (this === window) in this case
ただし、ローカル変数の場合、唯一の方法は使用することですeval
(免責事項)
function () {
var a = "hello world";
var varName = "a";
console.log( this[varName] ); // won't work
console.log( eval(varName) ); // Does work
}
動的変数をオブジェクトに入れて、プロパティのようにアクセスできない限り
function () {
var scope = {
a: "hello world";
};
var varName = "a";
console.log( scope[varName] ); // works
}
機能を使用できますeval
。
eval(myString).myproperty
ただし、eval には注意してください。ユーザーがこれを入力すると、JavaScript コードが実行されます。
私のように思える唯一の方法は、 eval を使用することです。しかし、彼らが言うように、eval は悪ですが、制御された環境ではそうではありません。これは可能な方法ですが、どうしても必要な場合を除き、eval の使用はお勧めしません。
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = eval(myString).myproperty;
eval()を使用する
var myObject = {};
myObject.myproperty = "Hello";
var myString = "myObject";
var wantThisToWork = eval(myString).myproperty;