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

js | this 指向问题

https://juejin.cn/post/6844904083707396109

  • 任何函数运行的时候,都会创建一个context对象,context对象有一个this对象,在运行的时候决定。
  • 任何函数都对应一个reference类结构体(具体叫啥有点忘了),简单就抽象成这样Reference{ base ,name}; base对应就是this,name就是函数名称;
  • this 的范围:最近的{}

举个例子,自己慢慢悟吧。

function foo(){} // 对应: {base:window,name:foo};
let a={ foo }
a.foo(); // 对应 {base:a,name:foo} 

简单粗暴的方法,就是去分析,f()在运行的时候,它的base是什么


,base为null,就是window/全局。
那怎么判断base呢?就是看f()前面有没有 .

var obj1 = {a: 1
}----------var obj2 = {a: 2,foo1: function () {console.log(this.a)},foo2: function () { // 分析obj2.foo2(); setTimeout(function () { // 运行这个函数的时候,没有. ,指向全局呗, 和setTimeout没关系console.log(this)console.log(this.a)}, 0)}
}
var a = 3obj2.foo1()
obj2.foo2()
function foo () {console.log(this.a)return function () {console.log(this.a)}
}
var obj = { a: 1 }
var a = 2foo() // 2  foo是一串代码,foo()是执行这串代码,返回的是一串代码,返回的这串代码没执行
foo.call(obj) // 1  foo这串代码,绑定this为obj,并执行。 相当于this指向obj,然后执行foo();
foo().call(obj) // 2 1  foo(),执行,并返回新函数,执行新函数,并把新函数的this指向obj
http://www.lryc.cn/news/403908.html

相关文章:

  • 《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》
  • Gitee 使用教程1-SSH 公钥设置
  • 理解Cookie、Session和Token
  • 概率论原理精解【1】
  • 数据结构(二叉树-1)
  • 巴黎奥运会倒计时 一个非常不错的倒计时提醒
  • 【Python】使用库 -- 详解
  • Web3D:WebGL为什么在渲染性能上输给了WebGPU。
  • SpringBoot面试高频总结01
  • Linux 工作队列(Workqueue):概念与实现
  • 前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法
  • 51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示
  • 在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?
  • 《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)
  • Spring Boot项目的404是如何发生的
  • <数据集>手势识别数据集<目标检测>
  • 【Vue3】选项式 API
  • 2、如何发行自己的数字代币(truffle智能合约项目实战)
  • 百日筑基第二十三天-23种设计模式-创建型总汇
  • 张量的基本使用
  • Oracle(14)什么是唯一键(Unique Key)?
  • PostgreSQL的引号、数据类型转换和数据类型
  • Mad MAD Sum-Codeforces Round 960 (Div. 2)
  • Flutter 插件之 package_info_plus
  • 如何实现布隆过滤器?
  • 运维团队如何高效监控容器化环境中的PID及其他关键指标
  • 通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能
  • Pointnet++改进即插即用系列:全网首发WTConv2d大接受域的小波卷积|即插即用,提升特征提取模块性能
  • 4核16G服务器支持多少人?4C16G服务器性能测评
  • 塔子哥的平均数-美团2023笔试(codefun2000)