js的this的解析

  1. 初识this
    this => 永远表示某个对象,但写在不同的地方,它表示不同的对象

  2. 全局下的this:
    window => 浏览器环境下的全局对象
    console.log(this) => 全局作用域内的this指向window

  3. 默认情况的this:
    this一般只用在函数内部:函数内的this就是找到这个函数的所有者

	let obj = {
		name:'你好程序猿',
		fn(){
			// 这里的this指向obj,fn属于obj
			console.log(this.name);
			}
	}

	obj.fn();

函数内的this指向这个函数的所有者,是因为函数的所有者才有这个函数,一般也是由所有者来调用该函数
那能不能认为谁拥有这个函数,this就指向谁呢?
通常情况确实如此,但这样并不不严谨,我们继续往下看

  1. this严格的定义
    this => 哪个对象调用this所在的函数,this就指向这个对象.(严谨)

那怎么样算调用?

函数一定是需要通过某个对象调用的

  • 默认情况,对象只能调用自己的方法,不能调用别的对象的方法
  • 默认情况,函数的所有者就是函数的调用者
    所以找this的指向,就是看看这个调用的前面是哪个对象,this就指向这个对象
  1. 确定this指向步骤(默认情况)
  • a:this写在哪个函数声明内(写在哪个函数的{}里,先找到this写在哪)
  • b:这个函数的调用在哪里 => 关键
  • c:看看这个调用的前面是哪个对象,this就指向这个对象



  1. 确定this指向(特殊情况)
    js是如何让一个对象调用不属于它的方法呢
    call方法 => 临时改变一次this指向
    apply方法 => 临时改变一次this指向,与call的区别是传递的参数格式为数组
    bind方法 => 绑定this => 永久改变this指向
了解详细情况,请关注后面的call,apply,bind解析
  1. 确定箭头函数this指向
    有箭头函数,不要分析箭头函数的调用,分析箭头函数的父函数的调用
了解详细情况,请关注后面的箭头函数的this指向解析
  1. 确定new构造函数this指向
    有new,this指向实例
了解详细情况,请关注后面的new构造函数this指向解析

关于this的题外话:

this是js的关键字,是不能被直接赋值的(这涉及到关于this的上下文),否则会这个报错

Invalid left-hand side in assignment



posted @ 2021-05-20 17:37  源大大123  阅读(74)  评论(0)    收藏  举报