自定义jQuery
jQuery基础结构
jQuery本质是一个闭包函数
(function(window,undefined){
})(window)
传入window可以避免变量重名带来的错误 这种结构可以使一个框架或工具库享有自己的命名空间不受干扰,传入undefined是因为Ie8 之前可对undefined进行赋值,所以也要拿一个自己的undefined
定义自己的jQuery文件我的命名为jQuery_self
// 闭包避免作用域引起的命名冲突
(function (window,undefined) {
/*
* @param selector {object}jQuery对象是传入参数
* @returns {init|jQuery_self} 返回jQuery_self类型
* @desc 定义njQuery返回njQuery对象 从原型上的init方法上创建
*/
var jQuery_self = function(selector,context){
return new jQuery_self.prototype.init(selector,context);
};
// 自身原型上的init方法中的this可用
jQuery_self.prototype.init.prototype = jQuery_self.prototype;
// 在全局挂载jQuery_self $ 两个顶级对象
window.jQuery_self = window.$ = jQuery_self;
})(window);
写出jQuery_self的基本结构,与jQuery的写法一样 这里的含义就是一种无new实例化,平常如果我们自己写 肯定是写一个构造函数new 一下,然后返回new完的对象
这里jQuery的做法是采用init方式构建对象,本身init方法创建的对象,也无法访问jQuery原型方法和属性,但是jQuery又将init的原型指向顶级对象的原型,这样就可以访问jQuery的实例方法
这里可能有人想说我在扯淡了,直接返回new jQuery()不就行了,