this指向相关问题。本文章包含介绍this是什么、this的默认指向、怎么改变this、箭头函数和普通函数的区别,这些常被问到的面试题。
this是什么
this是函数执行时所在的环境。
普通函数的this在执行时才能知道,箭头函数没有this(因此他的this是外部函数的this)
函数的运行环境是怎样决定的呢?
this的设计,跟内存里面的数据结构有关系。
普通函数默认this绑定
默认绑定: 非严格模式下 this 指向全局对象,严格模式下 this 会绑定为 undefined
bind call apply 区别
call()、apply()、bind() 三个函数都能改变this指向
1、执行方式不同
call、apply 直接执行函数
bind 返回的是一个新的函数,所以要调用它才会被执行
2、第二个参数不一样
bind,call,apply第一个参数都是this指向,
第二个参数:
call 和 bind 的函数入参参数都用逗号分隔传入函数中
apply 的函数入参参数要放在一个数组里面传入函数中
箭头函数和普通函数的区别
1、箭头函数没有this,普通函数有this
箭头函数的this是外层函数的this在定义时就决定了,普通函数this在执行时才能知道
2、箭头函数不能作为构造函数
3、剪头函数没有this,因此也不能用bind、call、apply改变指向
4. 箭头函数没有原型属性
5. 不绑定arguments,用rest参数...解决