js5的this:this指向函数运行时所在的执行环境的对象
var obj = {
a: f = function() {
console.log(this);
setTimeout(function() {
console.log(this);
}, 0);
}
}
obj.a();
输出:
{a:f}
window
//a在局部环境里执行,指向当前对象,所以this指向obj
//setTimeout回调的代码都是在全局作用域环境中执行的,所以指向window
而换成:
var b = obj.a;
b();
输出:
window
window
//b这个时候相当于一个函数,而b是在全局环境下执行的,所以指向window
es6的this:es6没有自己的this,指向外层代码的
this