ここで使用されているハックについて説明してください(nullがコンテキストとして渡され、そのコンテキストのプロパティを返す関数に渡されることがわかります。したがって、ここで実際に何が起こっているのかが明確に理解できません。
function getGlobal(){
return (function(){
return this.dust;
}).call(null);
}
ここで使用されているハックについて説明してください(nullがコンテキストとして渡され、そのコンテキストのプロパティを返す関数に渡されることがわかります。したがって、ここで実際に何が起こっているのかが明確に理解できません。
function getGlobal(){
return (function(){
return this.dust;
}).call(null);
}
コンテキストを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を参照してください
秘訣は、関数のレシーバーがない場合window
(実際には、実行されたスクリプトのグローバルオブジェクト、つまり名前)が使用されるという事実を使用することです。
したがって、このトリックによりdust
、最も近い埋め込みコンテキストで定義されたプロパティ()をバイパスし、グローバルオブジェクトで定義されたプロパティを使用できます。