this作用域详解示例

JavaScript 中的 this 关键字是一个动态的上下文引用,它与当前代码的执行上下文有关。在不同的使用场景下,this 可以指代不同的对象,因此深入理解 this 是开发人员必备的技能之一。下面通过示例来说明 this 的作用域。

一、全局作用域:

在全局作用域中,this 指向全局对象 window(在浏览器中),或者 global 对象(在 Node.js 等环境中)。

console.log(this); // window/global

二、函数作用域:

在函数作用域中,this 的值取决于函数的调用方式。

① 作为普通函数调用:

当函数作为普通函数调用时,this 指向全局对象。

function foo() {
  console.log(this);
}

foo(); // window/global

② 作为对象的方法调用:

当函数作为对象的方法调用时,this 指向该对象。

const obj = {
  foo() {
    console.log(this);
  }
};

obj.foo(); // obj


③ 使用 call、apply 或 bind 方法调用:  使用 call、apply 或 bind 方法可以改变函数的执行上下文,从而改变 this 的值。

function bar() {
  console.log(this);
}

const obj = {};

bar.call(obj); // obj
bar.apply(obj); // obj
const boundBar = bar.bind(obj);
boundBar(); // obj


④ 作为构造函数调用:  当函数作为构造函数调用时,this 指向正在创建的新对象。

function Foo() {
  console.log(this);
}

const obj = new Foo(); // obj
三、箭头函数作用域: 在箭头函数中,this 的值取决于外部作用域中 this 的值。箭头函数没有自己的 this。

const obj = {
  foo: () => {
    console.log(this);
  }
};

obj.foo(); // window/global


综上所述,this 的值是动态绑定的,它依赖于代码的执行上下文和运行环境。了解 this 的作用域可以帮助我们更好地理解 JavaScript 中的上下文引用机制,从而更好地编写代码和调试程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值