var obj = { count : 1, add : function(a) { var f = v => v + this.count return f(a); }, add1 : function(a) { var b = { count : 2 }; var f = v => v + this.count; return f.call(b,a); },
add2: function(a) { var b = { count: 2 }; var f = function(v){return v + this.count}; return f.call(b,a); } }; console.log(obj.add(1)); //2 console.log(obj.add1(1)); //2 console.log(obj.add2(1)); //3
总结: 哪个对象调用了函数,该函数里面的this就指向谁!如果一个函数没有明确的调用者,则this就默认指向window对象,箭头函数比较特殊,箭头函数没有this,箭头函数里面的this继承外面的环境!即箭头函数外面环境的this指向谁,箭头函数的this就指向谁。 要更全面了解,可以参考以下文章:https://www.cnblogs.com/zjjDaily/p/9482958.html