1 如何创建、删除、查找节点
createElement()
createTextNode()
appendChild()
removeChild()
replaceChild()
insertBefore()
getElementById()
getElementByTagName()
2 JavaScript 用typeof 来判断数据类型,只能区别基本类型,‘number’,'string', 'boolean', 'undefined', 'object'。对于数组,函数,对象来说,其关系复杂, 若使用typeof 会统一返回object , 这样为后续处理带来不便。原生js有一个函数Object.prototype.toString.call()函数会给出数据的具体类型,会比typeof精确
3 想实现一个页面对某个节点的拖拽,使用什么方法?
ondragenter 当被鼠标拖动的对象进入其容器范围内时触发此事件
ondragover 当被鼠标拖动的对象在另一个容器范围内拖动时触发此事件
ondragleave 当被鼠标拖动时离开容器范围时触发此事件
ondragdrop 在一个鼠标移动事件当中,当离开鼠标键时触发此事件
4 什么叫伪数组,如何把维数组转化为真实数组?
伪数组: 无法直接调用数组方法或者期望length属性有什么特殊的行为,但仍可以用遍历真实数组的方法来遍历他们
典型的是函数的argument函数,还有像调用getelementByTagName, document.chidNodes 之类的,他们返回的Nodelist都是伪数组
1 遍历数组转存到真实数组 2 [].slice.call 3 Array.prototype.slice.call
5 数组的方法
pop shift unshift slice splice concat join indexOf charAt split
6 闭包
当一个函数的返回值是另外一个函数,如何返回的那个函数调用了其父函数的变量 ,如何返回的这个函数在外部被执行,就产生了闭包。
使用闭包注意的点:
滥用闭包,会使内存泄漏
会改变父函数内部变量的值
7 写出三种减少页面加载时间的方法
1 压缩css、js文件 2 合并css、js文件,减少http请求 3 外部css、js文件放在最底下 4 减少dom操作,尽量减少不必要的dom操作
8 浏览器是如何渲染页面的
1 解析html文件,建立dom树
2 解析css
3 将css和dom树合并
4 布局和重绘