1.DOMContentLoad和load
1.DOMContentLoaded
是HTML文档(CSS、JS)被加载以及解析完成之后触发(即 HTML->DOM
的过程完成 );
2.load需要在页面的图片、视频等加载完后被触发,而DOMContent不需要等待这些资源加载完成;
ready
1.调用dom.ready时,先判断下dom是否ready了,如果dom已经ready,则直接执行函数,否则,推入readyList数组等待执行。
2.判断domready,标准浏览器下,有document.DOMContentLoaded事件表明domready,而IE下,则通过doScroll来模拟,原理是在IE中,任何DOM元素都有一个doScroll 方法。当documentElement可以调用doScroll时,证明dom加载完成了
2.javascript的本地对象,内置对象和宿主对象分别是什么
本地对象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
内置对象:内置对象有自己的特点,那就是无需使用new +构造函数创建,而是JavaScript引擎初始化的时候就被创建。比如Global对象和Math对象
3.宿主对象
所有的BOM和DOM对象都是宿主对象。window Document
3.ECMAScript 5中的Object.getPrototypeOf() 函数
function Obj() { this.name = 'abc'; } Obj.prototype.fullName = 'function(){
console.log(123)
}'; var obj = new Obj(); console.log( obj.__proto__.fullName ); console.log(Object.getPrototypeOf( obj) === obj.__proto__ );
4.严格模式
严格模式是什么
1.为了消除JavaScript语法的不合理不严谨之处,减少怪异行为
2.消除代码运行的不安全之处,保证代码安全执行
3.提高编译效率,增加运行速度
4.为未来新版本的JavaScript做好铺垫
使用严格模式
'use strict';
内容
- 变量必须先声明后使用
- 函数参数不能有同名属性,否则报错
- 不能使用with
- 不能对只读属性赋值,否则报错
- 不能使用前缀0表示八进制数,否则报错
- 不能删除不可删除的属性,否则报错
- 不能删除变量delete prop,会报错,只能删除属性delete global[prop]
- eval不会在它的外层作用域引入变量
- eval和arguments不能被重新赋值
- arguments不会自动反映函数参数的变化
- 不能使用arguments.callee
- 不能使用arguments.caller
- 禁止this指向全局对象
- 不能使用fn.caller和fn.arguments获取函数调用的堆栈
- 增加了保留字(protected,static,interface)