jQuery是面向对象的设计思想。
new
方法的核心是返回一个新对象,将原型链和实例的this关联起来,而jQuery选择器在使用的时候不必使用this,原因是在构造函数内部调用了new。
例如:
var $$ = ajQuery = function(selector) {
if(!(this instanceof ajQuery)){
return new ajQuery(selector);
}
this.selector = selector;
return this
}
但是绝对不能直接在构造函数中返回new ajQuery()因为会循环调用,导致内存泄漏。
jQuery是这样做的:
var $$ = ajQuery = function(selector) {
return new ajQuery.fn.init(selector);
}
可是这里返回的并不是 ajQuery的实例啊,于是jQuery这么做:
jQuery.prototype.init.prototype=jQuery.fn
于是new ajQuery.fn.init
相当于取到jQuery的原型,由于是引用传递,因此不必担心性能问题。