this指向
this是在运行时绑定的,并不是在编写时绑定,它的上下文取决于函数调用时
this的绑定与函数无关,之取决于函数的调用方式
this的四种调用方式用模式
1 普通函数调用模式
2对象方法调用模式
3构造器调用模式
4call() apply() bind()
1普通函数调用模式
(1)函数调用模式中的函数不是对象的属性值,而是直接作为函数调用
在这种模式下this指向全局对象
普通箭头函数this指向
函数的this指向遵循一个基本原则:谁调用的函数,函数的this就指向谁,
否则指向全局。
箭头函数this指向
首相我们要知道,箭头函数本身没有this,箭头函数this是定义箭头函数时
父级作用域的this,也就是说使用箭头函数时,箭头函数内部的this我们
需要的this我们只需要看定义该函数时,该箭头函数父级的this即可
(2)对象方法调用模式
方法调用模式是指函数作为对象的属性 方法 被调用
(3)构造器调用模式
通过构造函数创建一个实例后,那么this就会指向这个实例。当然其结果是因为
new操作时会自动执行一些操作。
1 在内存中创建一个新对象
2将新对象的原型指向构造函数prototype的值
3将新对象的值赋值给构造函数内部的this(this指向新对象)
4执行构造函数返回非空对象,则返回该对象,否则返回刚创建的新对象
(4)call apply bind
使用ca ll,apply,bind可以显示的将this指向某个对象
apply与call的区别(面试中比较常见)
apply与call第一个参数都是this将指向的对象;apply第二个参数是一个
数组作为参数,call第一个参数后可以接受任意一个参数
5几种调用模式优先级
构造器调用>call,apply,bind>对象方法调用>普通方法调用