JS环境中的this指的是谁。主要看方法的调用方式:
- 直接用()运算符来调用函数,那么函数里面的this指的是window对象
- 函数如果绑定给了某个HTML元素的事件上,那么函数里面的this就是这个HTML对象
- 用定时器调用函数,函数内部的this就是window对象
- 用对象打点(方法)来调用函数,函数里面的this指的是这个对象
- 用apply、call,可以人工设置this是谁了,百变。
- 当一个函数用定时器调用的时候,this就是window
- 当一个函数用new调用的时候,this就是隐秘创建的空对象,函数里面的语句将被执行,并且返回新对象
那么有个常见的问题,new的过程发生了那些事情?
new 的过程
JavaScript规定,一个函数可以用new关键字来调用。那么此时将按顺序发生四件事情:
1)隐秘的创建一个新的空对象
2)将这个函数里面的this绑定到刚才创建隐秘新对象上
3)执行函数体里面的语句
4)返回这个新的对象