JavaScript中this的存在为我们写代码提供了非常多的帮助,但是在具体使用的时候this的具体指向会变得各不相同,在本篇文章中,我们将详细讨论this的指向机制。
首先我们要明确一个概念,this既不是指向当前函数,也不是某个固定的对象,而是函数在执行时的环境对象。也就是是说,函数内this的指向只和函数是如何被调用的有关,和函数的定义方式以及位置等没有必然的联系。
1. 最普通的函数调用
上述案例中,我们可以认为全局函数demo是顶层对象window的方法,所以可以认为是window在调用demo函数,所以其中的this指向的是window对象。
- function demo(){
- console.log(this);
- }
- demo();
2. 对象方法中的this
在上面这个案例中,执行的虽然也是demo函数,但是在我们是通过obj对象对demo函数的引用访问到demo函数的,所以可以认为是obj对象在调用函数demo,函数内this的this就要指向obj对象。
- function demo(){
- console.log(this);
- }
- var obj = {
- foo:demo
- }
- obj.foo();
3. 定时器中的this
在第一个定时器