阅读量:0
jQuery提供了两种扩展方法:一种是通过$.fn对象扩展原型,另一种是通过$.extend()函数扩展对象。
读jQuery之二(两种扩展)
通过jQuery.extend扩展
描述 | |
jQuery类型 | jQuery.extend中的jQuery类型是function,即typeof jQuery值为字符串“function”。 |
静态方法 | jQuery.extend相当于为该类添加了静态方法extend,静态方法是不需要new一个实例再去调用的,通过“类名+方法名”直接调用。 |
源码示例 | jQuery.extend({ noConflict: function(deep) { ... } }); 这里的this则是function jQuery。 |
示例解释 | 通过$.extend为对象myself添加了setName方法,示例代码如下: var myself = {name: "jack"}; $.extend(myself, {setName: function(n){this.name=n;} }); myself.setName("tom"); |
通过jQuery.fn.extend扩展
描述 | |
jQuery.fn | jQuery.fn等于jQuery.prototype,也就是说给function jQuery的原型(prototype)上挂了个extend方法。 |
扩展方式 | 通过调用jQuery.fn.extend(object)来扩展时(注意只传一个参数object),extend函数中仍然会执行 if (length === i) { target = this; --i; },这时的this则是jQuery.prototype。 |
示例解释 | 通过调用extend方法给fun.prototype上添加属性,方法,示例代码如下: function fun(){} fun.prototype.extend = function(obj){ for(var a in obj) this[a] = obj[a]; } fun.prototype.extend({name:"fun2",method1:function(){}}); |
相关问题与解答
1、问题一:jQuery.extend和jQuery.fn.extend有什么区别?
答案:jQuery.extend和jQuery.fn.extend实际上是同一个函数,不同之处在于它们扩展的对象不同,jQuery.extend用于为jQuery类本身添加静态方法和属性,而jQuery.fn.extend用于为jQuery对象的原型添加属性和方法。
2、问题二:为什么需要使用$.extend而不是直接为对象添加属性或方法?
答案:使用$.extend可以方便地进行深拷贝,避免直接修改原对象,它提供了一种统一的方式来扩展自定义对象和jQuery对象,使代码更加简洁和易于维护。
以上内容就是解答有关“读jQuery之二(两种扩展)-jquery”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。