JavaScript中this的详解
在了解this之前,我们先来说明一下,构造函数 和 普通函数 的区别:
1. 构造函数的首字母是大写的,这一点是约定俗成的,即使你使用的是小写的字母,也是可以的,但是那样不符合规范;
2. 构造函数在调用的时候使用 new 操作符,普通函数不会使用new操作符的;
new在执行的时候会做这些事情:
1. 在内存中创建一个object实例对象;
2. 将this指向创建的实例对象;
3. 执行构造函数,给创建的实例对象赋予 属性和方法;
4. 返回这个实例对象;
那么,接着说明this的问题。在js的函数中this的指向问题,有点让人难以捉摸,在学习的过程中总结如下几点内容:
1. 一般函数中的this,指向的是全局window:为什么会是window呢?,因为一般函数是window对象的方法,所有this指向的是window对象;
2. 构造函数中的this,指向的是由构造函数创建的对象:因为在js中并没有 类 ,所以this指向的只能是由构造函数创建的对象实例;
3. 方法中的this,函数作为一个对象的方法,其中使用的this指向的是该对象;
4. 事件处理函数中的this,this指向是事件源;
总结:函数定义中的 this 的指向,是由函数调用时决定的。