2
var func = function(){};
var funcName = "func";
funcName.call();

関数の便利な機能を楽しみにしています

4

3 に答える 3

1

角括弧表記を使用して、オブジェクトのプロパティ名に文字列識別子を使用できます。

obj['identifier'] === obj.identifier

ただし、オブジェクト プロパティとして変数にアクセスできる唯一のコンテキストは、グローバル変数の場合です。これは、変数がグローバル (ブラウザーのウィンドウ) オブジェクトのプロパティとして追加されるためです。

var global = this;
var name = 'fred';
alert(global['name']); // fred

他の実行コンテキストの変数オブジェクトにはアクセスできませんが、evalを使用して文字列を評価できます。

alert( eval('name'))

しかし、それは強く推奨されています。代わりに角かっこ表記のオブジェクト プロパティを使用します。

于 2013-06-12T02:58:28.843 に答える
0

ユーザー入力を使用して適用する関数を選択することを考えている場合、一部のユーザーはその機能 (*) の不快な使用法を見つける可能性があり、おそらく次のように関数をハッシュの値として割り当てる方が安全な場合があります。

(*) 繰り返しになりますが、訪問者は、受信したサイトの JavaScript のコピーを自由に編集できるため、これは議論の余地があるかもしれません。

function rotate(){
rotate an image;
}

function resize(){
resize an image;
}

operations = { 'rotate': rotate, 'resize': resize };
...
try {
(operations[userChoice])();
} catch(e){ console.log(e); } // or maybe tell the user there is no such function 

操作オブジェクトを使用すると、userChoice が呼び出すことができるものが制限されることに注意してください。

于 2013-06-12T03:08:32.430 に答える