比较点
普通函数
箭头函数
具体案例
简写
/
箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略。
1、函数简写
this指向
this总是指向调用它的对象,如果作为构造函数,它指向创建的对象实例
箭头函数的this指向的是父级作用域的this,是通过查找作用域链来确定 this 的值,也就是说看的是上下文的this,指向的是定义它的对象,而不是使用时所在的对象。
2、this指向
this改变
call()、apply()、bind()等方法能改函数中this的指向
call()、apply()、bind()等方法不能改变箭头函数中this的指向
3、改变this指向
构造函数
可以作为构造函数,用来创建对象实例
箭头函数不能作为构造函数使用
4、构造函数
arguments对象
每一个普通函数调用后都具有一个arguments对象,用来存储实际传递的参数。
箭头函数没有自己的arguments,取而代之用rest(剩余)参数...arg来解决
5、arguments与...args
prototype原型
具有prototype
没有prototype原型
6、prototype原型
1、箭头函数简写:
箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略var fn =()=>console.log("123");//去掉了{} 和returnfn();//123
2、this指向:
普通函数中this指向的是调用它的对象,如果作为构造函数,它指向创建的对象实例箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。
普通函数中this指向的9大场景:
函数的调用方式
this指向
对象.函数( )
对象
函数( )
window
IIFE 立即执行函数
window
定时器
window
DOM事件处理函数
添加事件监听的元素
数组[下标 ]( )
数组
call(对象,arg1,arg2)
对象
apply(对象,arry)
对象
new 函数()
对象的实例
9大场景对应的案例代码,太多放不下,需要粉丝群获取。
箭头函数中this指向
箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。
<divid="box">