jQuery.extend 与 jQuery.fn.extend 的区别+jQuery 的实现原理+jQuery 是如何处理缓存的

80 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天
点击查看活动详情
一、jQuery 库中的()是什么()是什么 ()函数是 jQuery()函数的别称,()函数用于将任何对象包裹成jQuery对象,然后被允许调用定义在jQuery对象上的多个不同方法。甚至可以将一个选择器字符串传入()函数用于将任何对象包裹成 jQuery 对象,然后被允许调用定义在 jQuery 对象上的多个不同方法。甚至可以将一个选择器字符串传入()函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。

二、jQuery.extend 与 jQuery.fn.extend 的区别 .fn.extend().fn.extend() 和 .extend() 是 jQuery 为扩展插件提拱了两个方法 jQuery.extend()一般用于扩展工具函数(也可以说是基于类的扩展) jQuery.fn.extend()一般用于扩展自定义插件,即用在 jQuery 实例上的插件(基于对象的扩展)

三、jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝 浅拷贝,浅拷贝代码 extend 函数里不传入第一个参数,默认为 false (只复制一份原始对象的引用) var newObject = .extend(,oldObject);深拷贝,深拷贝代码把extend函数的第一个参数设置为true:(对原始对象属性所引用的对象进行进行递归拷贝)varnewObject=.extend({}, oldObject); 深拷贝,深拷贝代码把 extend 函数的第一个参数设置为 true: (对原始对象属性所引用的对象进行进行递归拷贝) var newObject = .extend(true, {},oldObject);

四、jQuery 的实现原理 1、为了防止全局变量污染,把 jQuery 的代码写在一个自调函数中, 2、咱们平常使用的$实际上 jQuery 对外暴漏的一个工厂函数, 3、而构造函数在 jQuery 的内部叫 init,并且这个构造函数还被添加到了 jQuery 的原型中。当我们调用工厂函数的时候 返回的其实是一个构造函数的实例 4、jQuery 为了让第三方能够对其功能进行扩展,所以把工厂函数的原型与构造函数的原型保持了一致。这样子对外暴漏工厂函数,即可对原型进行扩展。

五、jQuery 是如何处理缓存的 要处理缓存就是禁用缓存. 1 通过.post()方法来获取数据,那么默认就是禁用缓存的。2通过.post()方法来获取数据,那么默认就是禁用缓存的。 2 通过.get()方法来获取数据,可以通过设置时间戳来避免缓存。可以在 URL 后面加上+(+newDate)例.get(ajax.xml?+(+newDate),function()//内容);3通过.get('ajax.xml?'+(+newDate),function(){//内容}); 3 通过.ajax 方法来获取数据,只要设置 cache:false 即可

六、jQuery 的 slideUp 动画,当鼠标快速连续触发动画会滞后反复执行,该如何处理 在触发元素上的事件设置为延迟处理:使用 JS 原生 setTimeout 方法 在触发元素的事件时预先停止所有的动画,再执行相应的动画事件:$('.tab').stop().slideUp();