1
4

1 に答える 1

2

これはevalとは何の関係もありません。あなたが言う時

foo();

thisfooの内部は常にグローバルオブジェクトになります(関数が-で作成された場合を除きますbind-以下を参照)。いくつかの選択肢があります。

この値は次のように「事前設定」できますbind

//won't work on IE8 - will have to shim `bind`
var foo = eval('func.foo.bind(func)'); 

更新されたフィドル

または、thisを使用して関数を呼び出すときに手動で値を設定できますcall

var foo = eval('func.foo');
foo.call(func);

更新されたフィドル


そして、はい、nbrooksが言ったように、evalの使用は推奨されるべきではありません。

于 2012-12-24T16:11:35.117 に答える