1.一个 div,有几种方式得到这个 div 的 jQuery 对象?
2.是否知道自定义事件? jQuery 里的 fire 函数是什么意思,什么时候用?
3.针对 jQuery 的优化方法?
4.jQuery 通过哪个方法和 Sizzle 选择器结合的?
5. jQuery 对象的特点?
6.介绍下 Promise. all 使用、原理实现及错误处理?
7.jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
8.jQuery 与 jQuery UI、jQuery Mobile 区别?
9.jQuery.fn 的 init 方法返回的 this 指的是什么对象?为什么要返回 this?
10. jquery.extend 与 jquery.fn.extend 的区别?
1.一个 div,有几种方式得到这个 div 的 jQuery 对象?
根据id:("div#id")或("#id");
根据class:("div.class")或("div.class")或(".class");
根据标签名:$("div");
根据属性:$("div[attribute='value'"]。
2.是否知道自定义事件? jQuery 里的 fire 函数是什么意思,什么时候用?
第1种是把那个函数放到ready函数外面。yuan
第2种是在ready函数里面加上window.deleteStu = deleteStu;
即: $(function(){ function deleteStu(id){ alert(id); } window.deleteStu = deleteStu; }
callbacks.fire() 函数用于传入指定的参数调用所有的回调。
3.针对 jQuery 的优化方法?
缓存jquery对象,减少获取次数。
使用ID选择器去选择元素,因敏泛为它会直接侧泪映射为JavaScript中的getElemengById()
利用链式编程使得js更轻便。
使用子查询,缓存附件元素以便于后续的操作。
4.jQuery 通过哪个方法和 Sizzle 选择器结合的?
Sizzle 选择器采取 Right To Left 的匹配模式,先搜寻所有匹配标签,再判断它的父节点。
5. jQuery 对象的特点?
1.一款轻量级的js框架
JQuery核心js文件才几十kb,不会影响页面加载速度。与Extjs相比要轻便的多。
2.丰富的DOM选择器
JQuery的选择器用起来很方便,好比要找到某个dom对象的相邻元素js可能要写好几行代码,而JQuery一行代码就搞定了,再比如要将一个表格的隔行变色,JQuery也是一行代码搞定。
3.链式表达式
JQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
4.事件、样式、动画支持
JQuery还简化了js操作css的代码,并且代码的可读性也比js要强。
5.Ajax操作支持
JQuery简化了AJAX操作,后台只需返回一个JSON格式的字符串就能完成与前台的通信。
6.跨浏览器兼容
JQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。
7.插件扩展开发
JQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前台页面上的组件都有对应插件,并且用JQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。
8.可扩展性强
JQuery提供了扩展接口:JQuery.extend(object),可以在JQuery的命名空间上增加新函数。JQuery的所有插件都是基于这个扩展接口开发的。
6.介绍下 Promise. all 使用、原理实现及错误处理?
对于 Promise.all(arr) 来说,在参数数组中所有元素都变为决定状态后,然后才返回新的 promise。
错误处理:1、全部改为串行调用(失去了node 并发优势)
2、当promise捕获到error 的时候,代码吃掉这个异常,返回resolve,约定特殊 格式表示这个调用成功了。
7.jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
JQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。
深度拷贝的方式(把extend函数的第一个参数设置为true),把p(对象)的属性合并到jQuery($)上。
$.extend(true,$,p);
8.jQuery 与 jQuery UI、jQuery Mobile 区别?
jQuery 是 JS 库,兼容各种浏览器,主要用作更方便地处理 DOM、事件、动画、AJAX(主要功能选择器、属性修改、事件绑定)。
jQuery UI 是建立在 jQuery 库上的一组用户界面交互、特效、小部件及主题。
jQuery Mobile 以 jQuery 为基础,用于创建“移动Web应用”的框架。
9.jQuery.fn 的 init 方法返回的 this 指的是什么对象?为什么要返回 this?
init()方法中返回的 this 指向 init 的实例对象,而init.prototype等于jQuery.prototype,所以也是jQuery的实例对象;
返回this是为了实现链式调用。
10. jquery.extend 与 jquery.fn.extend 的区别?
extend:为jQuery添加类的方法,添加静态的方法。
fn.extend:为jQuery类添加“成员函数“,jQuery类的实列才可以调用这个”成员函数”。
extend的调用不会把方法扩展到对象实例上,引用它的放大需要通过jQuery类实现。
fn.exted的调用把方法扩展到对象的prototype上,所以实例化一个jQuery对象它就具有了这些方法。