jquery本质上是一个闭包
(function myJquery (window, undefined){
// 调用的时候创建一个myJquery的对象实例
var myJquery = function () {
return new myJquery.prototype.init()
}
// 定义对象属性和扩展方法
myJquery.prototype = {
constructor : myJquery,
constructor : myJQuery, jquery:"1.0",//版本号 selector: "",//参数 length: 0 ,//获取长度 }
//将在实例上添加方法和在原型上添加方法合二为一 myJquery.extend = myJquery.prototype.extend= function(obj) { for(var key in obj) { this[key] = obj[key] } }
// 在myJquery上添加新方法,通过myJquery.extend({key:fujnction}),通过传入键值对,扩充多个方法
myJquery.extend({
empty: function () { this.each(function (key, value) { value.innerHTML = ""; }) //方便链式编程 return this; }
})
// 让iinit上创建的对象实例可以使用myJquery原型上的方法
myJquery.prototype.init.prototype = myJquery.prototype
// 将myJquery暴露给外界
window.myJquery = window.$ = myJquery
})(window)