[解決済み] JavaScriptで動的な変数名を使用する
質問
PHPでは、こんなすごい/恐ろしいことができるんです。
$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1
Javascriptでこのようなことをする方法はないでしょうか?
例えば
var name = 'the name of the variable';
という名前の変数への参照を取得することは可能ですか?
name
?
解決方法は?
ECMA-/Javascriptは、以下のことを目的としています。
Objects
と
Contexts
(これもある種のオブジェクトです)、すべての変数は
変数
(関数の場合は
アクティベーションオブジェクト
).
だから、このように変数を作ると
var a = 1,
b = 2,
c = 3;
で
グローバルスコープ
(= NO function context) の場合、それらの変数を暗黙のうちに
グローバルオブジェクト
(=
window
をブラウザで表示します)。
これらは、"dot" や "bracket" という記法でアクセスすることができる。
var name = window.a;
または
var name = window['a'];
これは、この特定のインスタンスのグローバルオブジェクトに対してのみ機能します。
変数オブジェクト
の
グローバルオブジェクト
は
window
オブジェクトそのものです。関数のContext内では
アクティベーションオブジェクト
. 例えば
function foobar() {
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
alert(name);
name = this['a']; // === 1
alert(name);
}
new foobar();
new
は、自分で定義したオブジェクト(コンテキスト)の新しいインスタンスを作成します。がなければ
new
この関数のスコープも
global
(=window)です。この例では、次のように警告します。
undefined
と
1
をそれぞれ作成します。もし
this.a = 1; this.b = 2
を使っています。
var a = 1,
b = 2;
両方のアラート出力が未定義になる。このシナリオでは、変数
a
と
b
からActivation Objectに格納されることになります。
foobar
にアクセスすることはできません。
a
と
b
).
関連
-
vueの補間表現とv-textディレクティブの違いについて
-
JavaScriptのStringに関する共通メソッド
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで変数が配列であるかどうかを確認する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptのオブジェクトの長さ
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。