一:发现很多人面试的是都都会被问到函数中this指向的问题,今天咱们就来好好捋一捋这个问题,函数中this指向,以及es6箭头函数this指向的问题;
咱们先来看下面一个例子
window.color = 'red' var a = {color:'blue'} function Fun(){ console.log(this.color) } Fun() // 'red' a.Fun = Fun; a.Fun() // 'blue'
普通函数来说呢,this的指向就是该函数运行的环境对象,说白了就是谁调用它this就指向谁
上面的例子,定义一个打印出color的函数,分别两个对象调用它,一个是windos全局对象,另一个是定义的变量为a的对象,分别调用,打印出不同的内容。
说过了普通函数this指向,就来看一看es6当中箭头函数的指向
function foo() { setTimeout(() => { console.log('id:', this.id); }, 100); } var id = 21; foo.call({ id: 42 }); // id: 42
箭头函数导致this总是指向函数定义生效时所在的对象