[译]箭头函数 vs .bind()

在我们实际运用中,经经常运用ES6的箭头函数来替代Function.prototype.bind().

1.提取对象的要领

假如将一个对象的要领作为回调函数传入,你须要定义一个肯定的this,不然它将作为一个函数来实行(this值多是undefined, 也多是全局对象).比方:

    obj.on('anEvent', console.log.bind(console))

另一种解决方案就是运用箭头函数:

    obj.on('anEvent', x => console.log(x))
  • 译者注: 原文批评中也提到了ES7的绑定运算符, 以下:

    obj.on('anEvent', ::console.log)

2.this作为参数

下面的代码展现了一个小技能:关于一些要领,你能够不须要用bind()来为回调函数绑定this,这类要领许可你在分外的参数中定义this的值..filter()就是如许一类要领:

    const as = new Set([1, 2, 3]);
    const bs = new Set([3, 2, 4]);
    const intersection = [...as].filter(bs.has, bs);
        // [2, 3]

假如说你运用了箭头函数,代码会越发清楚易读:

    const as = new Set([1, 2, 3]);
    const bs = new Set([3, 2, 4]);
    const intersection = [...as].filter(a => bs.has(a));
        // [2, 3]

3.部份赋值

bind()许可你设定一个函数部份参数的值,你能够借由一个已有的函数,为它设定部份参数的值,然后建立一个新的函数:

    function add(x, y) {
        return x + y;
    }
    const plus1 = add.bind(undefined, 1);

再一次,我找到了运用箭头函数简化它的要领:

    const plus1 = y => add(1, y);

4.拓展浏览

    原文作者:LeuisKen
    原文地址: https://segmentfault.com/a/1190000004568359
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞