JS原生 查缺补漏

mouseenter/move/over都是表示鼠标移入,mouseleave/out都是表示鼠标移出,enter对应leave,over对应out。区别在于,enter/leave不支持冒泡,over/out支持。(冒泡是由下而上,从具体元素冒泡到根元素;捕获是由上而下,先捕获根元素,再作用到定义事件的元素)。

addEventListener是DOM2的用法,跟DOM1的onXXX的作用一样。

indexOf的第二个参数(可选)是从前往后开始数的位置,lastIndexOf的第二个参数(可选)是从后往前开始数的位置。
split的第二个参数(可选)表示分割出来的字符串数组的最大长度。

substr, substring, slice都是用于对字符串进行截取。它们的第二个参数都是可选的。如果只传一个参数,则表示截取子串的开始位置。如果传两个参数,第二个参数,substr表示长度,substring表示截取字串的结束位置的索引加一。
slice跟substring的区别:如下图,s1是hello world. substring中的负数表示0, slice中的负数表示从后往前数的索引。如果substring的两个参数,表示的索引,第一个比第二个还大,它会自动把字串索引改成从小的到大的;slice函数直接返回空串。

数值:



toFixed/toPrecision/toExponential

数组:

unshift和push方法的返回值是加入元素后的数组长度,pop方法返回结果是被弹出的最后一个元素, shift方法返回的是删除元素之后的数组长度。

splice: 第一个参数是必填项,开始删除的位置;第二个参数表示删除的个数。后面的参数是要添加的元素。返回值是删除的数组,如果第二个参数为0,则不删除,返回空数组。

slice:两个参数分别是start和end(不包括),不修改原数组。
a1.concat(a2) 相当于[…a1, …a2],两者都不会改变原来的数组a1.
sort和reverse两个方法,都会改变原来的数组。sort默认对元素进行字符序的排序,如果要按数字排序,必须传入排序函数。

forEach方法返回undefined,即使回调函数显示返回了值。
关于对象中,对象字面量定义的时候,key值要不要加引号的问题,如果key中有空格、有连字符、有保留字,则必须加。


assign、defineProperty, defineProperties等都是Object的静态方法