null作为上下文传递给函数调用

时间:2012-09-04 08:01:08

标签: javascript

请解释这里使用的hack(我可以看到null作为上下文传递给返回其上下文属性的函数。所以我无法清楚地理解这里实际发生了什么。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

诀窍是使用这样一个事实,即如果你没有函数的接收者,则使用window(实际上是已执行脚本的全局对象,因此名称)。

因此,这个技巧可以绕过最近的嵌入上下文中定义的属性(dust)并使用全局对象中定义的属性。