箭头函数导致this 指向问题

正确写法:

   function Utils() {
        Utils.prototype.getValue = (info) => {
            return !!info && info.value;
        }
    }
    let instance = new Utils();
    instance.getVolume = function(directive){ //不是箭头函数,函数内部this指向instance对象
        let value = this.getValue(directive);
        console.log('the value is: ' + value);
    };

    instance.getVolume({value: 10});

错误写法:

    function Utils() {
        Utils.prototype.getValue = (info) => {
            return !!info && info.value;
        }
    }
    let instance = new Utils();
    instance.getVolume = (directive) => { //箭头函数,函数内部this指向Window对象
        let value = this.getValue(directive);
        console.log('the value is: ' + value);
    };

    instance.getVolume({value: 10});

如注释所示箭头函数导致this指向了window对象。

 

你可能感兴趣的:(ES6)