JavaScript中this指针详解,以及React中this指针的指向
相信每一个前端的朋友都会遇到过this.xxx is undefined或者this.xxx is not a function的错误,明明我们定义了这个xxx,但是还是要报错?令人百思不得其解,其实就是因为this指针的引用对象中,没有找到这个定义xxx导致的,因此今天来总结一下this指针的几种常见的指向问题。
由于this的定义中提到了上下文,因此我们在这里先简单的梳理一下Js中的上下文。
一、执行上下文
上下文分为:
- 全局上下文:全局执行上下文是在代码执行时就创建了,函数执行上下文是在函数调用的时候创建的。
- 【JavaScript中this指针详解,以及React中this指针的指向】函数上下文:同一个函数,在不同时刻调用,会创建不同的执行上下文。
变量和函数的上下文决定了它们可以访问哪些数据以及他们的行为。
每个函数调用都有自己的上下文。当代码执行流进入函数时,函数的上下文被推到一个上下文栈上。在函数执行完之后,上下文栈会弹出函数的上下文。---《JavaScript 高级程序设计》
function f() {
"use strict";
// 这里是严格模式
return this;
}
console.log(f() === undefined);
// true
在浏览器中全局上下文也是window对象,node.js中的全局对象是globalThis。
console.log(this === window);
// true
a = 1;
console.log(window.a);
// 1
this.b = "小白";
console.log(window.b)// "小白"
console.log(b)// "小白"
(未完...)
推荐阅读
- Mybatis中Mapper的实现原理解析
- Android获得栈中最顶层的Activity
- 钛极客|迭代屏下摄像头,定制三主摄,中兴Axon 40 Ultra正式发布
- Android中为什么主线程不会因为Looper.loop()方法造成阻塞
- android studio定时器
- Spring中ClassPathXmlApplicationContext类的使用详解
- 城市|中国公园最多的城市,吊打北上广
- Android 应用兼容性最佳实践 | 中文教学视频
- Android 9 的非 SDK 接口限制 | 中文教学视频
- Android Jetpack( Room | 中文教学视频)