美文网首页
箭头函数与this

箭头函数与this

作者: zjh111 | 来源:发表于2018-03-06 14:45 被阅读0次

es3时函数会默认把'.'前面的对象默认当作this传入函数,也可以用call、apply和bind等方法改变。
由于this太难用才产生=>弱化this产生的问题。
但是this 指向不像py那样明显的写出来,导致指向不清产生各种问题。
但是coffeescript中使用=>方便的解决this问题(coffee还有个->没抄)。
于是有了没有this的箭头函数,确保内外this相同。
还使代码简化。

//对代码的一些简化
let xxx = (p1) => {
console.log(1)
return 2
}
xxx(2)
------------------------------------------------
//只有一个参数时,参数可以不写()
//只有一行函数体时可以同时省略return与{}
//如果写了return必须加{}否则报错
let xxx = p1 => p1*p1
xxx(2)

函数的this

var controller ={
    el:'#app',
    init:function(){
        $(this.el).on('click',this.onClick)//此时this为   controller     
    },
    onClick:function(){
      this.getUse();    //但在这里调用时却是#app这个元素
    },
    getUse:function(){
      console.log(this)
    }
}

下面是E6之前为解决问问题的一种方法

var controller ={
    el:'#app',
    init:function(){
      var self= this  //使用self来保留外面的this
      $(this.el).on('click',function(){
        self.xxx()  
      })
    },
    xxx:function(){
       this.getUse()  
    },
    function:getUse(){  
      console.log(this)
    }
}

ES6箭头函数出现后

var controller ={
    el:'#app',
    init:function(){
      $(this.el).on('click',() => { //箭头函数本身没有this使用的是外面的this
        this.xxx()  //这里就是controller.xxx()
      })
    },
    xxx:function(){
       this.getUse()  
    },
    getUse(){  //ES6新语法,可以省略":function"
      console.log(this)
    }
}

使用call给箭头函数指定this,this也不会改变。

相关文章

  • es6

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

  • 箭头函数

    1,箭头函数定义 2,Es6 中箭头函数参数与返回值简写 补充 3,箭头函数中 this 指向 注:箭头函数中的t...

  • es6应该搞清楚的问题

    一、箭头函数与普通functon有什么区别?箭头函数可以完全代替普通functon吗? 1.箭头函数是匿名函数,不...

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

    一、箭头函数与普通函数的定义方式不同 箭头函数: let fun = () => { console.log(...

  • 箭头函数与普通函数的区别你真的明白吗

    箭头函数与普通函数的区别? 构造函数可以使用new 生成实例,那么箭头函数可以吗?为什么?/答: 箭头函数比普通函...

  • 常见前端面试题

    箭头函数与普通函数的区别 箭头函数语法比普通函数更加简洁,但箭头函数中没有arguments,所以形参可以使用展开...

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

    箭头函数与普通函数的区别,实质是我们是否理解了箭头函数,在我刚开始接触ES6时,印象中的箭头函数与普通函数的区别就...

  • es6相关

    1.箭头函数与普通函数的区别 箭头函数 let fun = () => { console.log('lala...

  • ES6的学习(一)

    箭头函数 与函数表达式相比,箭头函数有更短的语法。 复杂时需要{}包裹 箭头函数没有自身的this,从外层继承th...

  • JavaScript深入浅出第1课:箭头函数中的this究竟是什

    摘要: 箭头函数极大地简化了this的取值规则。 普通函数与箭头函数 普通函数指的是用function定义的函数:...

网友评论

      本文标题:箭头函数与this

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