zoukankan      html  css  js  c++  java
  • Javascript箭头函数不适用场景

    来自《Vue企业开发实战》

    1. 在对象的方法中不建议使用箭头函数

    const Person={
            'username':'小暖','age': '18',
            'sayHello':  () => { 
                setInterval(() => {  console.log('我叫' + this.username + '我今年' + this.age + '岁!') }, 
            1000)
        }}
    Person.sayHello()
    

    输出

    我叫undefined我今年undefined岁!
    

    输出结果有问题,因为方法写在了对象里,而对象的括号是不能封闭作用域的,所以此时的this还是指向全局对象,而全局对象下没有username和age属性,所以会出现问题。

    2. 不能作为构造函数由于箭头函数的this具有不绑定的特点,不能使用箭头函数作为构造函数,如果这样做了,也会报错。

    3. 定义原型方法定义原型方法时,也不推荐使用箭头函数,看下面这段代码。

    function Person() {  
    this.username = "小暖"
    }
    Person.prototype.sayHello = () => {  
      console.log(this.username)}
      var p1 = new Person();
      p1.sayHello();
    

    输出undefined
    出现问题的原因是this指向window对象,这和使用箭头函数在对象中定义方法十分类似。

    小结

    箭头函数由于代码的简洁性和不绑定调用者this的特点,在非方法函数中使用最合适,而在方法函数中使用,需要特别注意它的this绑定问题,如果需要动态地修改this,建议不要使用箭头函数。

  • 相关阅读:
    ACM中java的使用
    hdu 1273最大流
    1066N !最右边非零数
    关于为什么要建退边的原因
    浅析指向指针的指针其作用
    poj 1860 bellman 求正环
    poj 3461
    poj 2031
    poj 1068
    strncpy的用法
  • 原文地址:https://www.cnblogs.com/jeff-ideas/p/14551158.html
Copyright © 2011-2022 走看看