开头啰嗦几句:程序之中,万事万物皆对象,这就是面向对象编程的核心思想,比如我们的js中的function,其实也是一个对象,是对象就可以有属性,在jq的源码中经常看到类似这样的方法:
jQuery.Event = function( src, props ) { if ( !(this instanceof jQuery.Event) ) { return new jQuery.Event( src, props ); } if ( src && src.type ) { this.originalEvent = src; this.type = src.type; } else { this.type = src; } ... };
明明是个函数,但是通过内部的赋值(this.),让Event()这个方法变成了一个普通的object对象,var e = new jQuery.Event( src, props );e已经是一个对象了,有着自己的属性
这里进来这后,先判断是否是jQuery.Event对象,不是的话,就new一个,为啥,为了this指向jQuery.Event,我们知道在js中new一个obj的话,this指向的就是这个obj