Nodejs中的this详解

本文深入探讨Node.js环境中this的特殊行为,包括全局、函数、构造函数及模块导出中this的不同表现,揭示其与JavaScript标准环境的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容都是关于在nodejs中的this而非javascript中的this,nodejs中的this和在浏览器中javascript中的this是不一样的。

1、全局中的this默认是一个空对象。并且在全局中this与global对象没有任何的关系:如下

console.log(this); {}
this.num = 10;
console.log(this.num); 10
console.log(global.num); undefined
2、在函数中的this

   function fn(){
        this.num = 10;
      }
   fn();
  console.log(this); {}
  console.log(this.num); undefined
  console.log(global.num); 10
在函数中this指向的是global对象,和全局中的this不是同一个对象,简单来说,你在函数中通过this定义的变量就是相当于给global添加了一个属性,此时与全局中的this已经没有关系了。

如果不相信,看下面这段代码可以证明。
function fn(){
function fn2(){

this.age = 18;

}
fn2();
console.log(this); global
console.log(this.age); 18
console.log(global.age); 18
}
fn();
3、构造函数中的this
function Fn(){
this.num = 998;
}
var fn = new Fn();
console.log(fn.num); 998
console.log(global.num); undefined
在构造函数中this指向的是它的实例,而不是global。
4、,全局中的this指向的是module.exports。
this.num = 10;
console.log(module.exports); {num:10}
console.log(module.exports.num);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值