1.DOM操作--怎样添加、移除、移动、复制、创建和查找节点?
1.创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
2.添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的子节点前插入一个新的节点
3.查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素的Id,唯一性
2.null和undefined的区别?
null是一个表示“无”的对象,转为数值时为0;
undefined是一个表示“无”的原始值,转为数值时为NaN.
当声明的变量还未被初始化时,变量的默认值为undefined。
null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。典型的用法:
1.变量被声明了,但还没有赋值时,就等于undefined。
2.调用函数时,应该提供的参数没有提供,该参数等于undefined。
3.对象没有赋值的属性,该属性的值为undefined。
4.函数没有返回值时,默认的返回值undefined。
null表示“没有对象”,即该处不应该有值。典型的用法:
1.作为函数的参数,表示该函数的参数不是对象。
2.作为对象原型链的终点。
3.new操作符具体干了什么?
1.创建一个空对象,并且this变量应用该对象,同时还继承了该函数的原型。
2.属性和方法被加入到this应用的对象中。
3.新创建的对象由this所引用,并且最后隐世的返回this。
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
4.JSON的了解?
JSON(javascript object notation)是一种轻量级级数据交换格式。他是基于javascript的一个子集。数据格式简单,易于读写,占用带宽小
JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript原生格式,这意味着在 JavaScript 中处理 JSON数据不需要任何特殊的 API 或工具包。
与XML序列化相比,JSON序列化后产生的数据一般要比XML序列化后数据体积小,所以在Facebook等知名网站中都采用了JSON作为数据交换方式。
在JSON中,有两种结构:对象和数组。
1. 一个对象以 “ { ” 开始,“ } ” 结束。每个“名称”后跟一个 “ : ” ;“名称/值 对”之间使用 “ , ”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用引号括起来,数值型则不需要。如:
var obj={"name":"darren","age":24,"location":"beijing"}
2. 数组是值(value)的有序集合。一个数组以 “ [ ” 开始, “ ] ” 结束。值之间使用 “ , ” (逗号)分隔。如:
var jsonlist=[{"name":"darren","age":24,"location":"beijing"},{"name":"weidong.nie","age":24,"location":"hunan"}];
5.js延迟加载的方式有哪些?
defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callback)、按需异步载入js
7.document.write和innnerHTML的区别?
document.write只能重绘整个页面
innnerHTML可以重绘页面的一部分
8.call()和apply()的区别和作用?
区别:apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。例
call()的第一个参数是上下文,后续是实例传入的参数序列
作用:动态改变某个类的某个方法的运行环境
9.哪些操作会造成内存泄露?
内存泄露指任何对象在你不再拥有或需要他之后仍然存在。
垃圾回收器定期扫描对象,并计算应用了每个对象的其他对象的数量。如果一个对象的应用数量为0(没有其他对象引用过该对象 ),或对该对象的唯一引用是循环的,那么该对象的内存即可回收。
setTimeout的第一个参数使用字符串而非函数的话,会引发内存泄露。闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)