美文网首页
箭头函数不能使用的场景

箭头函数不能使用的场景

作者: _一九九一_ | 来源:发表于2019-12-18 13:56 被阅读0次

使用箭头函数注意点:

  • 箭头函数内的this对象就是定义时所在的对象,不是使用时所在的对象
  • 箭头函数不可以当作构造函数,不可以使用new命令。
  • 箭头函数不可以使用arguments对象,该对象在函数体内不存在。用rest参数代替。
  • 不可以使用yield命令,因此箭头函数不能用于Generator函数中

列举了一些不能使用箭头函数的场景:

1. 定义对象方法的时候

const obj = {
    str: '111' ,
    fn: () => {
        console.log(this === window)  // => true
    }
}
  • 解决方式
const obj = {
    str: '111' ,
    fn () {
        console.log(this === obj) // => true
    }
}

2. 定义原型方法

function Cat(name) {
    this.name = name
}
 
Cat.prototype.sayCatName = () => {
    console.log(this === window)  // => true
    return this.name
};
 
const cat = new Cat('Mew')
cat.sayCatName()  // => undefined

3. 定义事件回调函数

在全局上下文下定义的箭头函数执行时 this 会指向 window,点击时,浏览器会尝试用 button 作为上下文来执行事件回调函数,但是箭头函数预定义的上下文是不能被修改的,这样 this.innerHTML 就等价于 window.innerHTML,this.innerHTML = 'button'无意义的

const button = document.getElementById('btn');
button.addEventListener('click', () => {
    console.log(this === window); // => true
    this.innerHTML = 'button'
});

4. 定义构造函数

const Message = (text)=>{
    this.text = text;
}
const msg = new Message('message add') //Uncaught TypeError: Message is not a constructor

在创建构造函数的时候,不能使用构造函数。因为,在使用构造函数创建对象实例时,构造函数的上下文是新创建的实例对象。

相关文章

  • es6

    箭头函数与普通函数的区别 箭头函数是匿名函数,不能作为构造函数,不能使用new 箭头函数不绑定arguments,...

  • Es6知识点总结

    methods 不能使用箭头函数 为啥?在箭头函数中使用this的话指向的是组件本身 如果不使用箭头函数 this...

  • 箭头函数不能使用的场景

    使用箭头函数注意点: 箭头函数内的this对象就是定义时所在的对象,不是使用时所在的对象 箭头函数不可以当作构造函...

  • ES6箭头函数与普通函数区别

    箭头函数作为匿名函数,是不能作为构造函数的,不能使用new 箭头函数没有原型属性 箭头函数不绑定arguments...

  • 9、箭头函数和普通函数的区别

    箭头函数: 普通函数: 1、箭头函数是匿名函数,不能作为构造函数,不能使用new原因:箭头函数没有原型对象prot...

  • ES6-箭头函数

    ES6允许使用箭头(=>)定义函数,箭头函数的语法多变,根据实际的使用场景有多种形式,但需要由函数参数、箭头和函数...

  • 箭头函数和普通函数的区别

    箭头函数是匿名函数,不能作为构造函数,不能使用new 箭头函数不能绑定arguments,取而代之用rest参数....

  • 箭头函数和普通函数的几大区别

    1.箭头函数是匿名函数,不能作为构造函数,不能使用new 普通函数可以使用new实例化 箭头函数使用new实例化会...

  • 箭头函数和普通函数的区别

    1、样式不同,箭头函数是=>,普通函数是function; 2、箭头函数不能作为构造函数使用,也就不能使用new关...

  • 前端面试必会面试题

    1、箭头函数和普通函数的区别 1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定argu...

网友评论

      本文标题:箭头函数不能使用的场景

      本文链接:https://www.haomeiwen.com/subject/dmprnctx.html