箭头函数

98 阅读1分钟
        // 简单对象没有执行上下文。
        // 箭头函数的this在定义函数的时候就已经绑定了父执行上下文。
        var a = 11;
        var obj = {
            a: 22,
            // 不看调用者obj,而是向上寻找
            print: () => {
                console.log('print: ' + this.a);
                setTimeout(() => {
                    // 调用者是window,但是箭头函数不看调用者
                    // 跟外层的this指向是相同的,即输出一样
                    console.log('print: ' + this.a);
                }, 500);
            },
            say: function () {
                // this指向obj
                console.log('say: ' + this.a);
                setTimeout(function () {
                    // setTimeout是window上面的方法,this指向window
                    console.log('say: ' + this.a);
                }, 500);
            },
        };
        obj.print(); // 11 11
        obj.say(); // 22 11