谈谈你对this的理解
this的指向不是在编写时确定的,而是在执行时确定的,同时,this不同的指向在于遵循了一定的规则。
1.默认情况下,指向全局,浏览器的话就是指向window
2.如果函数被调用的位置存在上下文,那么函数被隐式绑定
function f() { console.log( this.name ); } var obj = { name: "Messi", f: f }; obj.f(); //被调用的位置恰好被对象obj拥有,因此结果是Messi
3.new 指向这个新对象。
function Person(name) { this.name = name; console.log(name); } var person1 = new Person('Messi'); //Messi
4.箭头函数的this指向哪里?
箭头函数的是没有属于自己的this的,它所谓的this是捕获其上下文的this,作为自己的this,所以箭头函数不会被new调用,所谓的this也不会被改变
我们可以用Babel理解一下箭头函数:
// ES6 const obj = { getArrow() { return () => { console.log(this === obj); }; } } // ES5,由 Babel 转译 var obj = { getArrow: function getArrow() { var _this = this; return function () { console.log(_this === obj); }; } };
好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。