this指向

简介: 在 JavaScript 中,`this` 的指向有多种情况:全局作用域中指向全局对象(如浏览器中的 `window`),函数中默认也指向全局对象,但作为对象方法调用时则指向该对象。箭头函数中的 `this` 继承自定义时的作用域,不会改变。可通过 `call`、`apply` 或 `bind` 方法显式改变 `this` 指向。

在 JavaScript 中,this 关键字的指向可能有以下几种情况:

  1. 在全局作用域中,this 指向全局对象。在浏览器中,全局对象是 window,在 Node.js 中,全局对象是 global
  2. 在函数中,默认情况下,this 指向全局对象。但是,如果将函数作为对象的方法调用,则 this 指向调用方法的对象。
  3. 在箭头函数中,this 的指向是定义时所在的作用域的 this。箭头函数没有自己的 this,因此它永远不会改变指向。
  4. 可以使用 callapplybind 方法显式地指定 this 的指向。

例如:

const obj = {
  name: 'John',
  greet: function() {
    console.log(`Hello, ${this.name}!`);
  }
};
obj.greet();  // Hello, John! 因为是obj调用的greet方法,所以greet方法内部的this指向的是obj
const greet = obj.greet;
greet();  // Hello, undefined!,因为greet()是通过window调用的,所以this指向window
const arrowGreet = () => {
  console.log(`Hello, ${this.name}!`);
};
arrowGreet();  // Hello, undefined! this指向window
const boundGreet = obj.greet.bind(obj);
boundGreet();  // Hello, John!  // this被bind修改为了obj,所以this指向了obj


怎么改变this指向

改变this指向的三种方法:call、apply、bind

相关文章
|
5月前
|
Linux Shell
linux自动崩溃,模拟测试
该脚本创建一个 systemd 服务和定时器,在系统启动3分钟后触发崩溃。通过向 /proc/sysrq-trigger 写入 "c" 来实现内核崩溃,用于测试系统崩溃后的恢复机制。
146 4
|
5月前
|
设计模式 前端开发 JavaScript
MVVM的理解:
MVVM的理解:
402 0
|
5月前
|
JavaScript 前端开发
forEach与map的区别
forEach与map的区别
310 0
|
5月前
|
JavaScript 前端开发
for of和 for in的区别
JavaScript中,for...of遍历可迭代对象的值,适合数组;for...in遍历对象属性,注意其遍历顺序不确定且包括继承属性,可用hasOwnProperty判断自身属性。同步指任务依次执行,异步则通过回调或事件实现非阻塞执行,适用于耗时任务如网络请求。常见异步方式包括定时器、接口调用、事件监听。
223 0
|
5月前
|
存储 JavaScript 前端开发
JS的数据类型,储存上的差距
JavaScript 中的数据类型分为基本类型和引用类型,存储方式和占用空间不同。基本类型包括布尔值、数字、字符串、null 和 undefined,占用空间小;引用类型如对象、数组和函数则占用更多空间。合理选择数据类型可优化程序性能。
118 0
JS的数据类型,储存上的差距
|
机器学习/深度学习 人工智能 算法
Post-Training on PAI (3):PAI-ChatLearn,PAI 自研高性能强化学习框架
人工智能平台 PAI 推出了高性能一体化强化学习框架 PAI-Chatlearn,从框架层面解决强化学习在计算性能和易用性方面的挑战。
|
4月前
|
人工智能 算法 量子技术
模拟天气这件事,终于有人靠“量子力学”来救场了!
模拟天气这件事,终于有人靠“量子力学”来救场了!
129 0
|
5月前
|
数据采集 数据可视化 算法
打破信息孤岛:MES实现工厂透明化运营
在当今瞬息万变的市场环境中,制造企业面临着前所未有的挑战。如何实现生产全流程的可视化管理?如何基于实时数据做出精准决策?点晴MES系统给出了完美的解决方案,通过数字化手段打通生产环节的信息壁垒,为企业打造透明化运营的智能工厂。 数据采集与整合:让数据 “说话”
136 0
|
5月前
|
前端开发 JavaScript
promise的理解
promise的理解
92 0