JS
- jQuery事件绑定的原理✔️
调用on函数的时候,将生成一份事件数据,并将该数据加入到元素的缓存中
{
type: type,
origType: origType,
data: data,
handler: handler,
guid: guid,
selector: selector,
needsContext: needsContext,
namespace: namespace
}
- jquery中每个元素都可以有一个缓存(只有有需要的时候才生成)
- 缓存就是该元素的一个属性
- jquery为每个元素的每种事件都建立一个队列,用来保存事件处理函数,所以可以对一个元素添加多个事件处理函数
"div#box": { //元素
"Jquery623873": { //元素的缓存
"events": {
"click": [
{ //元素click事件的事件数据
type: type,
origType: origType,
data: data,
handler: handler,
guid: guid,
selector: selector,
needsContext: needsContext,
namespace: namespace
}
],
"mousemove": [
{
type: type,
origType: origType,
data: data,
handler: handler,
guid: guid,
selector: selector,
needsContext: needsContext,
namespace: namespace
}
]
}
}
}
当要解绑事件的时候,如果没指定fn参数,jquery就会从该元素的缓存里拿到要解绑的事件的处理函数队列,从里面拿出fn参数,然后调用removeEventListener
进行解绑
- 数组函数是否改变原数组✔️
- 用过哪些数组的API✔️
- jQuery怎么获取DOM元素,DOM怎么获取jQuery元素✔️
jQuery -> DOM
- 使用数组索引方式访问
var dom = $(dom)[0];
- 使用函数
get()
访问,get()函数中的参数为索引号
var dom = $(dom).get(0);
DOM -> jQuery
对于已经是一个DOM对象,只需要用$()
把DOM对象包装起来,就可以获得一个jQuery对象了
var v=document.getElementById("v"); //DOM对象
var $v=$(v); //jQuery对象
- 深浅拷贝✔️
- 如何判断数据类型?除了使用typeof instanceof之外怎么判断?✔️
function isArray(arr) {
return Object.prototype.toString.call(arr) === '[Object Array]'
}
- jQuery链式操作是怎么实现的?✔️
return this
- new一个对象的过程 ✔️
- ES6了解吗? ✔️
- 有没有用过组件?完全没用过Vue或React? ✔️❓
- 作用域和闭包?ES6有块级作用域! ✔️
- 事件冒泡代理
CSS
- CSS动画
- CSS选择器
- 元素如何在页面中上下居中
- 知道几种盒模型?怎么计算宽度?
浏览器
- 跨域
- 存储
- DOM增加节点
安全性
- 安全性问题
算法
- 判断字符串中是否有重复
- 计算字符串中重复字符的个数
- 如何匹配
{[(
项目相关
- 如何实现长按批注?
- 印象深刻的前端项目?