JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口发生的一些特定的交互瞬间。
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
DOM2和DOM3级则在这个结构的基础上引入了更多的交互能力,也支持了更高级的XML特性。
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
ECMA-262对内置对象的定义是:“由ECMAScript实现提供的,不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。”
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配主文本检索与替换功能
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
所谓Promise,就是一个对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的API,可供进一步处理。
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
二进制数组(ArrayBuffer对象、TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第7种数据类型。
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
Array.from方法用于将两类对象转为真正的数组:类似数组对象(array-like object)和可遍历(iterable)对象(包括ES6新增的数据结构Set和Map)。
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)
作为一个半前端工程师,而且只会写点HTML5和CSS3的“假”前端工程师,为了能更好地理解一下前端的花花世界,最近拜读了《高性能网站建设指南》一书,对作者提出的前端性能优化的14个规则获益匪浅,为了让自己印象更深刻点,决定作此文,当做学习笔记
'%3e%3cpath%20d='M624.68,512.43a16,16,0,0,1,0,22.63l-45.25,45.25a16,16,0,0,1-22.63-22.63l45.26-45.25a16,16,0,0,0,.19-22.43Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M602.25,490l-34.13-34.13h0L556.8,444.55a16,16,0,0,0-22.63,0l22.63-22.63a16,16,0,0,1,22.63,0l67.88,67.88a16,16,0,0,1,0,22.63l-22.63,22.63a16,16,0,0,0,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpolygon%20points='219.66%2038.63%20219.66%2038.64%20208.34%2027.32%20219.66%2038.63'%20fill='%23fff'%20/%3e%3cpath%20d='M534.17,444.55a16,16,0,0,1,22.63,0l11.32,11.32-45.26,45.25L511.55,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M466.29,557.68a16,16,0,0,1-22.62,0l-11.32-11.31,45.26-45.25,11.31,11.31a16,16,0,0,1,0,22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M443.67,557.68a16,16,0,0,0,22.62,0l-22.62,22.63a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,0-22.63l22.62-22.63a16,16,0,0,0,0,22.63l22.63,22.63,33.94,33.94Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M421,421.92a16,16,0,0,1,22.63,22.63L398.41,489.8a16,16,0,0,0-.06,22.56L375.78,489.8a16,16,0,0,1,0-22.63Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3cpath%20d='M398.35,512.36l.06.07L375.78,489.8Z'%20transform='translate(-348.47%20-417.23)'%20fill='%23fff'%20/%3e%3c/g%3e%3c/svg%3e)