当前位置: 首页 > article >正文

js中this的指向问题

核心

js中this的指向不是在定义的时候确定的,而是在调用时明确。

指向口诀

“谁调用指向谁,如果存在多级调用,那么它的指向就是离它最近的调用者”,光说不练假把式,上代码!

let obj = {
    name :  'paopao',
    sayName:function (){
        console.log(this.name)
    }
}

obj.sayName()  //paopao

直接在方法中打印this

function consoleThis () {
    console.log(this)
}
consoleThis() //window

这里的consoleThis()看似没有调用者,其实他可以换种写法window.consoleThis(),因为在浏览器环境中定义的方法都可以看做是window的属性。

箭头函数中的this

箭头函数中并没有this,它的this继承自父级。也就是说箭头函数中的this的指向与它父级中this的指向一致。

let obj = {
    name:'dollar',
    sayName:()=>{
        console.log(this.name)
    }
}
window.name ='haha'
obj.sayName()  //haha

这个例子中sayName方法中的this与obj的this保持一致,当执行obj.sayName()时,其实是window.obj.sayName(),即window调用了obj那么obj的this指向就是window,所以obj.sayName()最后输出了定义在window上的haha


http://www.kler.cn/a/411798.html

相关文章:

  • 利用浏览器录屏
  • 网上蛋糕售卖店管理系(Java+SpringBoot+MySQL)
  • jvm核心组件介绍
  • 51单片机从入门到精通:理论与实践指南入门篇(二)
  • 在 Mac(ARM 架构)上安装 JDK 8 环境
  • 对比C++,Rust在内存安全上做的努力
  • 代码随想录算法训练营第五十八天|Day58 图论
  • JavaScript的运算符与Python的对比
  • leetcode hot100【LeetCode 215.数组中的第K个最大元素】java实现
  • 【AI技术赋能有限元分析应用实践】FEniCS 安装在Ubuntu路径实现python调用
  • leetcode.3206 交替组Ⅰ
  • Spring Bean初始化流程
  • linux安装mysql8.0.40
  • Mairadb 最大连接数、当前连接数 查询
  • 【Git原理与使用】多人协作
  • 通过指令导入/导出vscode扩展插件
  • 【数据结构】C语言实现---栈
  • ChatGPT 4.0:如何提高学术论文的发表成功率
  • MATLAB深度学习(六)——LSTM长短期神经网络原理与应用
  • 华为ENSP--BGP路由协议实验详解
  • 网络安全期末复习
  • docker启动kafka、zookeeper、kafdrop
  • Oracle impdp-ORA-39083,ORA-00942
  • GitLab使用操作v1.0
  • 【设计模式】【行为型模式(Behavioral Patterns)】之策略模式(Strategy Pattern)
  • 【微服务架构】Kubernetes与Docker在微服务架构中的最佳实践(详尽教程)