这个绑定在node.js中

时间:2014-09-21 12:56:11

标签: javascript node.js this

我对一些node.js行为感到困惑,这与Google控制台不同。

这是一个简单的代码

var t = "GLOBAL";
var objet = {
  t : "LOCAL1",
  test : function() {
    console.log(this.t,t);
  }
};
var objet2 = {
  t : "LOCAL2",
  test : objet.test
};
var test = objet.test;
objet.test();
objet2.test();
test();

此代码有不同的结果。

在node.js中,我有以下结果:

LOCAL1 GLOBAL
LOCAL2 GLOBAL
undefined 'GLOBAL'

在chrome控制台中:

LOCAL1 GLOBAL 
LOCAL2 GLOBAL 
GLOBAL GLOBAL 

我认为直接调用绑定到test.t的函数,这将绑定到全局范围,在chrome中就是这种情况,但在node.js中是节点。

请注意,如果我删除第一行中的var,则node.js版本会给出相同的结果。

那是怎么回事?看来node.js中有一个我缺少的范围? 有人有线索吗?

1 个答案:

答案 0 :(得分:1)

在NodeJS中,默认范围是模块的范围。全局范围甚至比模块大,这是this所指的。在Chrome中,全局范围为window,这是this

请参阅module文档,更重要的是globals