Node.js 作用域问题 和 exports & module.exports

一、js 的作用域

1.1、在HTML宿主环境中

我们知道,在HTML中,通过 script 标签引入 js 文件;
js 文件里定义的全局变量时 共用 的;

这是因为,这些 js 文件里定义的全局变量是挂在window对象上的属性,所以是 共用

1.2、在Node.js宿主环境中

js 文件之间的变量初始是 隔离 的;
因为它没有所谓的 window 对象;

 **那如果我们想让文件之间可以通信呢?**这就需要 exports ,暴露文件自己。

求证:

我的文件目录:01.js 内容:

var a= 100;

文件目录

cmd 执行结果:引入了一个空对象 { } ,
 执行结果

二、exports 命令

  • exports 自带命名空间
  • exports 可以暴露多个参数
  • exports 返回的是一个对象

修改01.js:


var a = 100;
exports.num = a;

再次执行:发现接收到了exports 的内容
执行结果

三、module.exports 命令

当一个js文件仅仅希望暴露一个参数,通畅是暴露构造函数,此时我们可以使用module.exports命令
module.exports 返回的是一个函数,构造函数

  • app.js 和 Peopel.js是同级目录
  • app.js

var People = require('./People');
// console.log(People);

var person = new People("Tina",18,'女');
person.sayHello();

  • Person.js

function People(name,age,sex){
  this.name = name;
  this.age = age;
  this.sex = sex;
}

People.prototype.sayHello = function(){
  console.log("你好,我是"+this.name+",今年"+this.age+"岁,性别"+this.sex);
}

module.exports = People;

  • 打印结果
    在这里插入图片描述

 当然,app.js 里也可以是 exports.People = People ;
那么对应的People.js 时,调用 构造函数 就是 new People.People(“Tina”,18,‘女’);
是因为 exports 返回的一个对象 { People };

四、总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值