您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页Node.js中全局对象global,module及this指向的一些理解

Node.js中全局对象global,module及this指向的一些理解

来源:好走旅游网

global的理解

简单看个代码验证下:

//在test.js中给global添加一个属性a,值为4;
global.a = 4;
//新建一个文件引入test.js
require('./test')
console.log(global)

打印结果,可以看到属性被挂载在了global上,并能被访问到。

module的理解

刚才提到global是全局对象,那单个模块的顶级对象是什么,没错,就是module;module包含了当前模块的所有信息,而module.exports指的是当前文档所暴露的内容。

//打印下this
console.log(this === module.exports)//true

这里打印结果是true,this指向了模块的exports,而不是整个模块,姑且理解为方便与其他模块交互吧,刨除其他无关信息,只指向出口。(个人理解)

在模块中,模块内部的变量只能在当前模块使用,只有通过module.exports暴露出去后其他模块才可以使用。

结论:对于单个模块顶级对象是module,模块内的属性想要被其他模块访问,需要使用module.exports暴露。

this指向

1.模块内的this–指向module.exports

不再赘述

2.函数内的this–指向global

function xx() {
    console.log(this) //global
}
xx()

函数中的this指向了global,但是函数并不可以全局调用,很奇怪,不晓得为撒。

//a文件声明函数b
function b() {
    console.log(123)
}
//b文件调用函数,报错
b()

3.构造函数内的this–指向他的实例

不再赘述

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务