jQuery的无new构建
正常面向对象的写法:
var cJquery = function(){
//构造函数体
};
cJquery.prototype = {
name : function(alert("chenliang");)
age : function(alert(27);)
}
var c = new cJquery();
c.name();
使用jQuery时,并不会使用new来创建jQuery对象,而是类似一个工厂,不断的根据不同的需求产出不同的jQuery对象。
例如:
var cJquery = function(){
new cJquery();
}
因为new的其中一步就是执行构造函数体,所以,这种写法会造成无限循环
因此,jQuery采用了返回一个假jQuery对象来代替jQuery对象的方法(个人理解,不知道对不对)
var jQuery = function(){
return new jQuery.prototype.init();
}
jQuery.prototype = {
init : function(){
return this;
},
name : function(){alert("chenliang");}
}
但这种做法的后果是,jQuery返回的假jQuery对象(init对象),无法访问jQuery的原型对象上的方法。
因此jQuery做了最后一步处理:
jQuery.protype.init.protype = jQuery.protype;