1、所有对象都有原型
不是,用Object.create(null)创建的对象没有原型
2、阻止冒泡事件与阻止默认事件
e.preventDefault();//阻止默认事件
e.stopPropagation();//阻止事件冒泡
3、事件传播的三个阶段
捕获——目标——冒泡
4、区分mouseover,mouseenter,mouseout,mouseleave
mouseover和mouseenter都是鼠标移到元素身上就触发,区别是
1、mouseover,mouseout经过自身盒子触发,经过子盒子也触发,拥有冒泡特性
2、mouseenter,mouseleave只经过自身盒子触发,没有冒泡特性
5、DOM节的获取及操作
6、重绘和重排
改变元素几何信息(大小和位置),都会引起重排(骨架,margin,font-size根标签)
改变外观上的属性和方法会引起重绘(bgc)
DOM发生改变的时候触发重排,使DOM重新排列,重绘不一定会重排,但是重排一定发生重绘,重绘和重排都会耗费浏览器的性能,尽量避免
7、网页如何生成
- 解析html绘制DOM树
- 解析css绘制CSS树
- 生成render tree(渲染树)
- flow排列,将渲染树节点合成(渲染)
- paint绘制,将排列绘制在屏幕上(渲染)
8、BOM定时器
1.setTimeout()
var timerId = setTimeout(func|code, delay);
//func|code函数或代码在delay毫秒后执行
//除了前两个参数,setTimeout还允许更多的参数。它们将依次传入推迟执行的函数(回调函数)。
setTimeout(function (a,b) {
console.log(a + b);
}, 1000, 1, 1);
//清除定时器
clearInterval(timerId);
//防抖动,一个需要频繁触发的函数,在规定时间内,只让最后一次生效,
//前面的不生效
function debounce(fn,delay){
//记录上一次的延时器
var timer = null;
return function(){
//清除上一次延时器
clearTimeout(timer);
//重新设置新的延时器
timer = setTimeout(function(){
fn.apply(this);
},delay);
}
}
2. setInterval()
var i = 1
var timer = setInterval(function() {
console.log(2);
}, 1000)
//用法和setTimeout()一样,不过是每隔1秒就执行一次function
//清除定时器
clearInterval(timer );
------------------------------------未完------------------------------------
JSON.parse()
操作数组的各个方法sort、split、join、等