6

ここで使用されているハックについて説明してください(nullがコンテキストとして渡され、そのコンテキストのプロパティを返す関数に渡されることがわかります。したがって、ここで実際に何が起こっているのかが明確に理解できません。

function getGlobal(){   
  return (function(){   
    return this.dust;   
      }).call(null);
}
4

2 に答える 2

6

コンテキストをnullに設定するthisと、グローバルオブジェクトを指すようになります。dustしたがって、提供されたコードは、グローバルオブジェクトのプロパティにアクセスするように機能します。

ECMA 262 v5の仕様によると、10.4.3機能コードの入力

if thisArg is null or undefined, set the ThisBinding to the global object.

http://es5.github.com/#x10.4.3を参照してください

于 2012-09-04T08:09:16.167 に答える
3

秘訣は、関数のレシーバーがない場合window(実際には、実行されたスクリプトのグローバルオブジェクト、つまり名前)が使用されるという事実を使用することです。

したがって、このトリックによりdust、最も近い埋め込みコンテキストで定義されたプロパティ()をバイパスし、グローバルオブジェクトで定義されたプロパティを使用できます。

于 2012-09-04T08:07:11.143 に答える