箭头函数

2020-07-07  本文已影响0人  LuckyJin

箭头函数

特点:
1、this指向离自己最近的外层作用域的对象;
2、不能当做构造函数使用(箭头函数是匿名函数,没有函数名字,没办法new);
箭头函数中的this指向的是定义时的this,而不是执行时的this

//语法一:function换成了 ()=>
var fn=(a)=>{
console.log(a)
}
fn(10)

//语法二  不写{}默认表示return,当前函数意思是返回a这个值
var fn=a=>a;
fn(10)

//语法三 不写{}表示return,当前函数意思是返回一个对象
var fn=a=>({a:1});
fn()

和普通函数的区别

不绑定this
不绑定this的意思就是说:箭头函数的this是在定义的时候就确定好的,以后不管怎样调用箭头函数,箭头函数的this始终未定义的this

不绑定arguments
箭头函数还有一个比较有特点的地方就是其不绑定arguments,即如果你在箭头函数中使用arguments参数不能得到想要的内容。

什么时候最好不要使用箭头函数

作为对象的方法
最好不要在对象的方法中使用箭头函数,这样可能会导致一些问题的产生。除非你很熟悉箭头函数。

let obj = {
  myVar: 'foo',
  
  myFunc: () => { 
    console.log(this.myVar)  
  }
}
obj.myFunc() // undefined

不能作为构造函数
由于箭头函数的this不绑定的特点,所以不能使用箭头函数作为构造函数,实际上如果这样做了,也会报错。
经典的函数表达式可以用来构造这样一个新对象,但是箭头函数没有prototype 原型。不能new

let Person = function(name, height) {
  this.name = name
  this.height = height
}
Person.prototype.hello = function() {
  console.log('Hi, my name is ' + this.name)
}
let alice = new Person('Alice', 1.7)
alice.hello() // Hi, my name is Alice

定义原型方法

上一篇下一篇

猜你喜欢

热点阅读