ES6——箭头函数

人,是懒的。当我还在我母上大人肚子里因为懒的动而被她怀疑是否胎死腹中是我就知道。而箭头函数的出现,也也我懒得动一样,是一种懒的行为表现。(这一段没有意义。)

箭头函数——基本写法

    let fn = name => name
    // === 等价于
    let fn = (name) => {
        return name;
    }

立即执行箭头函数:

    let LJ = (now => now)(new Date());
    // === 等价于
    let LJ = ((now) => {
        return now;
    })(new Date());

箭头函数的几个特征:

1、没有this、arguments、super 和prototype 

2、不能new操作符执行,没有constructor的能力,不能被用作构造函数(想一想谁会用匿名函数做构造函数呢),更多被用来计算,数据流向,方便javascript优化代码;

3、箭头函数具有绑定this的能力,箭头函数中绑定的this是箭头函数的非箭头函数产生的父级作用域的this;

    let test = (name) => {
        // console.log(arguments); // arguments is not defined;
        console.log(this); // this 指向window
    }
    test('angela');

补充:关于this的绑定;(权重 new > 显示绑定 > 隐式绑定 > 默认绑定)

1、默认绑定(空执行函数,函数单纯指向window)

2、隐式绑定(谁调用,this指向谁)

3、显示绑定(call、apply、bind)

4、new 绑定 

    var a = 'window';
    let obj = {
        a : 'obj',
        show: function () {
            console.log(a,this.a);
        },
        showName: () => console.log(a,this.a),
        showN: function (){
            let show = () => {
                console.log(a,this.a);
            }
            show();
        }
    }
    obj.show(); // 谁调用,this 指向谁 window obj
    obj.showName(); // window window箭头函数 this指向 最近的非箭头函数的父级作用域中的this,此处为window
    obj.showN(); //window obj show 为箭头函数 this 指向 obj 
    var obj1 = obj.show.bind(window);
    obj1(); //window window 改变show函数的this指向为window 
    var obj2 = obj.showName.bind(obj);
    obj2(); //window window 改变showName函数的this 指向为obj,箭头函数已经bind一次,无法改变

注意:若 最外层 var a 改成 let a 或 const a,则 window.a 为undefined,因为let 和const声明的全局变量不属于window;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值