首页 前端知识 offer收割攻略,Web前端面试真题jQuery系列(带详解)(1)

offer收割攻略,Web前端面试真题jQuery系列(带详解)(1)

2024-06-25 23:06:35 前端知识 前端哥 330 532 我要收藏

$.fn.extend() 和 $.extend() 是 jQuery 为扩展插件提拱了两个方法

$.extend(object) ; // 为jQuery添加“静态方法”(工具方法)

$.extend({

min: function(a, b) { return a < b ? a : b; },

max: function(a, b) { return a > b ? a : b; }

});

$.min(2,3); // 2

$.max(4,5); // 5

$.extend([true,] targetObject, object1[, object2]); // 对targt对象进行扩展

var settings = {validate:false, limit:5};

var options ={validate:true, name:“bar”};

$.extend(settings, options); //注意:不支持第一个参数传 false

// settings == {validate:true, limit:5, name:“bar”}

$.fn.extend(json) ; // 为jQuery添加“成员函数”(实例方法)

$.fn.extend({

alertValue: function() {

$(this).click(function(){

alert($(this).val());

});

}

});

$(“#email”).alertValue();

5 jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝

1.浅拷贝(只复制一份原始对象的引用)

var newObject = $.extend({}, oldObject);

2.深拷贝(对原始对象属性所引用的对象进行递归拷贝

var newObject =$.extend(true, {}, oldObject);

6 jQuery 的队列是如何实现的

1.jQuery 核心中有⼀组队列控制方法,由 queue()/dequeue()/clearQueue() 三个方法组成。

2.主要应用于 animate() , ajax ,其他要按时间顺序执行的事件中

var func1 = function(){alert(‘事件1’);}

var func2 = function(){alert(‘事件2’);}

var func3 = function(){alert(‘事件3’);}

var func4 = function(){alert(‘事件4’);}

// 入栈队列事件

$(‘#box’).queue(“queue1”, func1); // push func1 to queue1

$(‘#box’).queue(“queue1”, func2); // push func2 to queue1

// 替换队列事件

$(‘#box’).queue(“queue1”, []); // delete queue1 with empty array

$(‘#box’).queue(“queue1”, [func3, func4]); // replace queue1

// 获取队列事件(返回一个函数数组)

$(‘#box’).queue(“queue1”); // [func3(), func4()]

// 出栈队列事件并执行

$(‘#box’).dequeue(“queue1”); // return func3 and do func3

$(‘#box’).dequeue(“queue1”); // return func4 and do func4

// 清空整个队列

$(‘#box’).clearQueue(“queue1”); // delete queue1 with clearQueue

7 jQuery 中的 bind(), live(), delegate(), on()的区别

1.bind() 直接绑定在目标元素上

2.live() 通过冒泡传播事件,默认 document 上,支持动态数据

3.delegate() 更精确的小范围使用事件代理,性能优于 live

4.on() 是最新的 1.9 版本整合了之前的三种方式的新事件绑定机制

8 是否知道自定义事件

  • 事件即“发布/订阅”模式,自定义事件即“消息发布”,事件的监听即“订阅订阅”

  • JS 原生支持自定义事件,示例:

document.createEvent(type); // 创建事件

event.initEvent(eventType, canBubble, prevent); // 初始化事件

target.addEventListener(‘dataavailable’, handler, false); // 监听事件

target.dispatchEvent(e); // 触发事件

  • jQuery 里的 fire 函数用于调用 jQuery 自定义事件列表中的事件

9 jQuery 通过哪个方法和 Sizzle 选择器结合的

  • Sizzle 选择器采取 Right To Left 的匹配模式,先搜寻所有匹配标签,再判断它的父节点
  • jQuery 通过 $(selecter).find(selecter); 和 Sizzle 选择器结合

10 jQuery 中如何将数组转化为 JSON 字符串,然后再转化回来

// 通过原生 JSON.stringify/JSON.parse 扩展 jQuery 实现

$.array2json = function(array) {

return JSON.stringify(array);

}

$.json2array = function(array) {

// $.parseJSON(array); // 3.0 开始,已过时

return JSON.parse(array);

}

// 调用

var json = $.array2json([‘a’, ‘b’, ‘c’]);

var array = $.json2array(json);

11 jQuery 一个对象可以同时绑定多个事件,这是如何实现的

$(“#btn”).on(“mouseover mouseout”, func);

$(“#btn”).on({

mouseover: func1,

mouseout: func2,

click: func3

});

12 针对 jQuery 的优化方法

总结

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

JavaScript

前端资料汇总

转载请注明出处或者链接地址:https://www.qianduange.cn//article/13528.html
标签
评论
发布的文章

JSON、Ajax

2024-07-27 22:07:31

JsonNode、ObjectNode和ArrayNode

2024-07-27 22:07:30

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!