this指向
- 函数在调用时,JavaScript会默认给this绑定一个值;
- this的绑定和定义的位置(编写的位置)没有关系;
3.this的绑定和调用方式以及调用的位置有关系;
4.this是在运行时被绑定的;
默认绑定:
隐式绑定:
在调用位置中,是通过某个对象发起函数的调用
new绑定:
JavaScript中的函数可以当做一个类的构造函数来使用,也就是使用new关键字.
显示绑定:
注意:JavaScript所有的函数都可以使用call和apply方法:
第一个传入参数都是相同的,要求传入一个对象,通过直接绑定了this的指向对象,称作显示绑定
如果我们希望一个函数总是显示的绑定到一个对象上,可以使用bind方法。bind() 方法创建一个新的绑定函数。在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用
规则优先级
- new绑定>bind绑定(new绑定和call、apply是不允许同时使用的,所以不存在谁的优先级更高;new绑定可以和bind一起使用,new绑定优先级更高)
- new绑定>隐式绑定
- 显示绑定>隐式绑定
- 默认规则的优先级最低
箭头函数(arrow function):
箭头函数是ES6之后增加的一种编写函数的方法,并且它比函数表达式更要简洁
- 箭头函数不会绑定this、arguments属性;(this引用就会从上层作用于中找到对应的this)
- 箭头函数不能作为构造函数来使用(不能和new一起来使用,会抛出错误。箭头函数中没有原型);
注意:如果函数执行体只有返回一个对象, 那么需要给这个对象加上()