var x = 1;
console.log(module.x); // undefined
console.log(exports.x); // undefined
console.log(this.x); // undefined
console.log(this === module); // false
console.log(this === exports); // true
我要晓得当前申明的x挂在哪个对象上?
我是这么理解的: node对js文件进行如下封装,
(function (exports, require, module, __filename, __dirname) {
// js code
});
而根据node源码的lib/module.js中
Module._load = function () {
// some codes
return module.exports; // 这句说明,将当前模块的exports导出
}
因此,当前文件的this即为exports,我也通过上述的代码,进行了验证,确实如此。(console.log(this === exports); // true) 我又接着认为,this.x可以访问到当前模块申明的x变量,结果this.x 却为undefined? 请各位帮我分析下。