做web开发几年,也认为自己的js写了不少,可真正去解释这个东西的时候,才发现不是这么简单,花了一些时间,写了几个小demo,让我们来一探究竟。
Demo 1
如果是一个全局的function,则this相当于window对象,在function里定义的各种属性或者方法可以在function外部访问到,前提是这个function需要被调用。
Demo 2
如果使用new的方式去实例化一个对象,则this不等于window对象,this指向function a的实例。
Demo 3
使用prototype扩展方法可以使用this获取到源对象的实例,私有字段无法通过原型链获取
Demo 4
不管是直接引用function,还是实例化一个function,其返回的闭包函数里的this都是指向window
Demo 5
在HTML中使用this,一般代表该元素本身
Demo 6
在IE和火狐(Chrome)下注册事件,this分别指向window和元素本身