码迷,mamicode.com
首页 > 其他好文 > 详细

箭头函数

时间:2018-01-31 11:32:58      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:pre   生成   参数   foo   gpo   type   出错   efi   自己   

箭头函数不会创建自己的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 关键字通常不能在箭头函数中使用(除非是嵌套在允许使用的函数内)。因此,箭头函数不能用作生成器

箭头函数

标签:pre   生成   参数   foo   gpo   type   出错   efi   自己   

原文地址:https://www.cnblogs.com/changlon/p/8385464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!