宝哥软件园

阅读jQuery(对象合成)之�

编辑:宝哥软件园 来源:互联网 时间:2021-10-19

我对jQuery的编写感到困惑,尤其是在使用了Prototype的$之后,我一度无法理解jQuery的$了。现在,对于前端学生来说,jQuery可能是第一次接触,他们会觉得习惯了,自然了。到现在,当时的API文档还保存在电脑里。发图感叹

这段时间,我的入门老师是茉茉。事实上,他仍然是我尊敬的同事之一。他的编程造诣很高,相信他已经突破了编程语言的限制。当每个人都在使用Prototype.js的时候,在jQuery在中国流行之前,他就已经将它引入了这个项目。言归正传,目前的jQuery版本已经达到了1.6.1。从当时的2000行左右扩展到9000行。相信很快会突破1w线。对于一些简单的网页,引入jQuery不再那么轻量级。这里的研究是1.6.1。我会读写,最后会写一个1000行左右的“mini jQuery”。以下是jQuery 1.6.1的代码片段。复制的代码如下: var jQuery=function(selector,context){//jQuery对象实际上只是init构造函数' enhanced '返回new jQuery.fn.init(selector,context,rootjQuery);},class 2 type={ };jQuery . fn=jQuery . prototype={ constructor : jQuery,init: function(选择器,上下文,rootjQuery){ }//给init function jQuery原型,以便以后实例化jQuery . fn . init . prototype=jQuery . fn;起初,我们似乎是在原型模式下编写一个类jQuery(别名$),但实际上,我们使用的是函数调用$('#id '),而不是new $('#id ')。标识符jQuery是一个函数,其中函数init的实例是新创建的,然后返回。至此,我们知道它真正的构造函数是jQuery.fn.init JQuery真的很诡异。它在jQuery的原型上挂起init,读起来有些混乱。jquery . fn . init . prototype=jquery . fn;是关键的一句。这句话把函数jQuery的原型赋给了函数init的原型。当调用$(“# id”)时,返回的对象组合由两部分组成。1,它在函数init中由这个携带(比如这个。上下文);2、函数jQuery的原型带来的(比如this . size/this . to array);通过模仿jQuery编写一个复制代码如下://zchain-0.1.jsfunction $(选择器){return new $。prototype.init(选择器);} $.prototype={ init : function(selector){ if(selector===undefined){ this . length=0;归还这个;} if(selector . nodetype==1){ this[0]=selector;} else { this[0]=document . getelementbyid(选择器);} this . length=1;},css:function(name,value){ this[0]。样式[名称]=值;归还这个;//chain call},hide : function(){ var self=this;setTimeout(function(){ self[0]. style . display=' none ';},3000);归还这个;//链式调用}} $。prototype.init.prototype=$。原型;为简单起见,这里的选择器只传递html元素或元素id(稍后会增强,但不会实现所有css选择器),长度属性挂在上面,值为1。我们调用时,复制的代码如下: var obj=$();console . dir(obj);$()其实是没有意义的,只是为了测试调用后obj的构成。firebug控制台输出如下:length:0Init :函数attr :函数hide :函数即obj对象就是由这个和函数$。函数init中的原型。看看美元上的方法。再次原型化,我只添加了css和hide方法,这两种方法的实现极其初级。复制的代码如下: script src=' http3360http://files.cnblogs.com/snandy/zchain-0.1.js'/script div id=' content ' 3秒钟后我将隐藏。/div脚本类型='text/javascript' $('content ')。css('颜色','红色')。hide();/script首先调用css将字体颜色设置为红色,3秒后隐藏。总结一下:jQuery对象引用了jQuery.prototype.init的一个实例,简单来说就是new jQuery.prototype.init.这里jQuery.prototype.init的类型是function,可以看作是一个类。jQuery对象由以下部分组成:1。挂在这上面的属性或方法在jQuery.prototype.init 2中,挂在jquery . prototype . init . prototype . 3上的属性或方法。因为jQuery.prototype被分配给了jQuery.prototype . init . prototype,所以挂在jQuery . prototype上的属性和方法也是jquery对象的一部分。4.jquery . fn . extend({ 0.})(后面会提到)。/201106/马援/zchain.rar

更多资讯
游戏推荐
更多+