对象方法中,不适用箭头函数
下面看一个例子:
我们在对象中定义了普通函数:getName和箭头函数 getName1,接下来我们来调用一下:
这里我们看看输出什么:
为什么对象方法中,箭头函数的this指向不是这个对象
- this 永远指向函数的调用者
- 在箭头函数中,this 指向的是定义时所在的对象,而不是使用时所在的对象。换句话说,箭头函数没有自己的 this,而是继承父作用域中的 this。
obj.getName()
中this
指向函数的调用者,也就是obj
实例,因此this.name = "张三"
。
getName1()
通过箭头函数定义,而箭头函数是没有自己的this
,会继承父作用域的this
。
因此obj.getName1()
执行时,此时的作用域指向window
,而window
没有定义name
属性,所有报空。
从例子可以得出:对象中定义的函数使用箭头函数是不合适的。
原型方法中,不适用箭头函数
我们又又又在对象中定义了普通函数:getName和箭头函数 getName1,接下来我们来调用一下:
这里想想输出什么
原因同对象方法一样。
构造函数也不行!
最后发现箭头函数new出来的构造函数报错。
这是因为构造函数是通过 new 关键字来生成对象实例,生成对象实例的过程也是通过构造函数给实例绑定 this 的过程,而箭头函数没有自己的 this。因此不能使用箭头作为构造函数,也就不能通过 new 操作符来调用箭头函数。