jQuery插件扩展extend的简单实现原理介绍
相信每位前端的小伙伴对jQuery都不陌生吧,它最大的魅力之一就是有大量的插件,去帮助我们更轻松的实现各种功能。
前几天晚上,闲来无事,就自己动手写了个简单的jQuery插件,功能很简单,只是让选定的元素高亮,但是其中的一些思想,还是很值得学习的,可以戳这里查看代码。
本文不聊怎么写jQuery插件,我们聊聊怎么去实现jQuery的`插件扩展功能,extend是怎么实现把我们写的插件挂载到jQuery上的。(大牛可以出门右拐......)
我们可以模拟创建一个迷你jQuery。
var $ = {};
好的,就这么简单......
下面我们要在这个对象上挂载一个extend方法,用于让开发者为我这个对象添加功能和方法。
var $ = { extend:function(ob){ /**暂时不管里面写什么**/ } }
现在,我们就在$这个对象上添加了一个extend方法,外部可以通过$nd(obj)的方法去调用它。
假设现在我们要往$上面添加一个方法,也就是添加一个插件,我们只需要:
$nd({ myFunction:function(obj){ //do something.... } })
现在只需要$nction(obj);就可以实现方法内所要做的事了。
问题的关键来了,我们明明是把方法挂载在$nd上,为什么可以直接用$去调用?这里就要看看extend内部是怎么处理传入的obj了。
var $ = { extend:function(obj){ for(var key in obj){ this.__proto__[key]=obj[key]; } }}
原来,extend把传入的obj遍历,然后挂到$的__proto__上了,这样,$随时都能够调用原型上的方法。
当然,实际上jQuery的extend实现比这个复杂的多,这里只是介绍了jQuery插件底层实现的基本思想,把公共的方法挂载到对象的原型上。
具体的插件编写可以看看文章开头的链接,我把插件编写的每个细节都做了注释,大家相互学习!
-
网页设计10大灵感来源介绍
不仅仅只有网页设计能激发我们创建出色网站的动力,几乎我们身边的任何事都会有此作用。以下是本站小编搜索整理的关于网页设计10大灵感来源介绍,供参考借鉴,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!自然图01图02思考设计的最佳场所...
-
javascript闭包的定义及应用实例分析
官方解释“闭包”是一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些变量也是环境表达式的一部分。通俗解释Javascript中所有的函数都是一个闭包。不过一般来说,嵌套的function产生的闭包更为强大,也是大部分时候我们所说的“闭包”。看如下...
-
WAP教程:WML 链接和图像
链接可以制作WML卡片来显示WML的锚功能,图像可以制作WML卡片来显示图像.链接可以制作WML卡片来显示WML的锚功能。标签总是要规定一个任务("go","prev",或"refresh")。任务定义了当用户选择此链接时要做的事情。在本例中,当用户选择"Nextpage",其任务是"前往":Next...
-
关于jQuery实现鼠标单击网页文字后在文本框显示的方法介绍
本文实例讲述了jQuery实现鼠标单击网页文字后在文本框显示的方法。分享给大家供大家参考。具体实现方法如下:张三李四王五赵六选择姓名$("ulli")k(function(){vartext=$(this)();$("input")("");$("input:checked")nts("td")ings("td")dren("input")(text);})希...