1、函数被当作函数使用(调用)时,函数的可以说是没有this的,因为这个this就是window。 当 f() 调用时,就相当于window.f(),所以this指向window。无论是在任何地方调用函数!(除apply, bind, call方式外)
2、函数被当作构造函数用时,this指向new返回的实例对象。
3、this不能离开对象实例,离开对象实例谈this都是无意义的。
4、结合第3点,this就是函数的调用者。
function f() { const obj = { name: 'obj', aa() { console.log('bb this: '+this.name); const bb = () => { console.log(this.toString()); } bb() let val = 'haha' console.log('cc this: '+this.name); const cc = function() { console.log(this.toString()) console.log(val); } cc() } } obj.aa() } f()