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指向解析

版权声明:本文为ydd123123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ydd123123/p/14790791.html