【jquery】 【jQuery技术内幕】阅读笔记 一
jQuery( object )
jquery在构造对象时,除了可以用十分好用的css选择器来查找DOM,还可以传入一个javascript对象来生成一个jquery对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // JS var foo = {name: "foo" ,hello: "word" }; var $foo = $(foo); $foo.on( "custom" , function (){ console.log( this .name + " " + this .hello); }); $( function (){ $( "#btn" ).bind( 'click' , function (){ $foo.trigger( "custom" ); }); }); // html <button id= "btn" >触发</button> |
为什么要在构造函数jQuery() 内部用运算符new创建并返回另一个构造函数的实例
对于jquery的构造函数,其实可以换个方法进行理解,因此我根据jquery的代码构造,写了下面这段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | ( function (window,undefined){ var factory = ( function (obj){ var NewObj = function (obj){ return new NewObj.fn.init(obj); } NewObj.fn = NewObj.prototype={ constructor:NewObj, init: function (obj){ this .context = { name:obj }; return this ; }, print: function (){ console.log( this .context.name); } } NewObj.fn.init.prototype = NewObj.fn; return NewObj ; })(); window.factory = window.FC = factory; })(window); FC( "hello word" ).print(); |
在源码中,上面这段代码中的factory和NewObj其实都是写作Jquery,这样比较容易导致概念混乱。因此我换了一个名称,好予以区分。
我们可以清晰地看到,jquery的整体架构其实可以相当于一个工厂模式。factory根据外部传入的对象obj,在内部new创建生成一个NewObj对象。
这样在创建NewObj对象时,可以省略new运算符。从而更方便的创建和调用NewObj对象。
getElementById浏览器兼容问题
IE7以下及某些Opera版本的时候,用getElementById获取元素时,会按name进行查找。好坑爹啊,这也可以??!!
调用createDocumentFragment进行文档插入可以非常明显地提升性能,(待确认!
)
分类:
JavaScript
标签:
JavaScript
, Jquery技术内幕
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?