箭头函数

Posted joe_ice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了箭头函数相关的知识,希望对你有一定的参考价值。

箭头函数不会创建自己的this, 而是使用 封闭执行上下文的this

通过 call 或 apply 调用

由于this在词法层面上已经完成了绑定,通过call() 或者 apply()方法调用函数时,只是传入了参数而已,并不会修改this的指向,对this没有影响。

var adder = {
    base: 1,
    add: function(a) {
        var f = v => v + this.base;
        return f(a);
    },
    addCall: function(a) {
        var f = v => v + this.base;
        var base = {
            base: 2
        };
        return f.call(base, a);
    }
};
adder.add(1);
// 2
adder.addCall(1);
// 2

像方法一样使用箭头函数

看看当我们试着把它们作为方法时发生了什么

‘use strict‘;
var obj = {
    i: 10,
    b: () => {
        console.log(this.i, this);
    },
    c: function() {
        console.log(this.i, this);
    }
};
obj.b();
// VM1007:4 undefined 
 obj.c();
// 10, Object {...}

箭头函数没有定义this绑定

Object.defineProperty(bar, ‘b‘, {
    get: () => {
        console.log(this, typeof this.a, this.a);
        this.a + 1;
        // 代表全局对象 ‘Window‘, 因此 ‘this.a‘ 返回 ‘undefined‘
    }
});

使用 new 操作符

箭头函数不能用作构造器,和 new一起用会抛出错误。

使用prototype属性

箭头函数没有prototype属性

var foo = () => {};
foo.prototype // undefined

使用 yield 关键字

yield 关键字通常不能在箭头函数中使用(除非是嵌套在允许使用的函数内)。因此,箭头函数不能用作生成器

以上是关于箭头函数的主要内容,如果未能解决你的问题,请参考以下文章

10个JavaScript代码片段,使你更加容易前端开发。

使用导航组件将返回箭头添加到片段

d3.select(this)不能用箭头函数

如何通过后退按钮(箭头)将活动导航到片段?

像导航抽屉一样切换片段(带后退箭头)

(导航组件)返回首页fragment时如何在activity上显示返回箭头?