字符串(String)
charAt
1 | // 返回在指定位置的字符 |
charCodeAt
1 | // 返回在指定的位置的字符的 Unicode 编码 |
concat
1 | // 连接字符串 |
indexOf/lastIndexOf
1 | // 查看字符出现的位置 |
match
1 | // match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。 |
search
1 | // search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,如果没有找到任何匹配的子串,则返回 -1。 |
replace
1 | // replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 |
slice
1 | // 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
substr
1 | // 同上 |
substring
1 | // 同上,但不支持负数,尾部开区间 [start, end)。 |
split
1 | // 把字符串分割为字符串数组 |
toLocaleLowerCase/toLocaleUpperCase
1 | // 把字符串转换为小/大写 |
toLowerCase/toUpperCase
1 | // 把字符串转换为小/大写 |
for-of
for-of 可以遍历字符串,除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。
at
1 | // at方法可以识别 Unicode 编号大于 0xFFFF 的字符,返回正确的字符。 |
includes
1 | // 查看指定字符是否存在与字符串中 |
startsWith/endsWith
1 | // 查看指定字符是否存在与字符串开头/结尾 |
repeat
1 | // repeat 方法返回一个新字符串,表示将原字符串重复n次。 |
padStart/padEnd
1 | // 字符串长度补全,默认使用空格补全长度。 |
trim
1 | // 去除首尾空格 |
trimLeft/trimRight/trimStart/trimEnd
字面意思
生成 DOM string
1 | // 有趣 |
数组(Array)
reduce
1 | // 使用 console.time('test'); 与 console.timeEnd('test'); 测试发现,数组遍历速度 for > for-of > forEach > filter > map > for-in(可适用于对象)/reduce > $.each([1, 2, 3, 4], (index, value) => console.log(value));(JQ) |
map
1 | // map 方法对数组的每一项都运行给定的函数,返回每次函数调用的结果组成一个新数组,不改变原数组。 |
forEach
1 | // forEach 数组遍历 |
push
1 | // push 方法可向数组的末尾添加一个或多个元素,并返回新的长度,改变原数组。 |
pop
1 | // pop 方法用于删除并返回数组的最后一个元素,改变原数组。 |
shift
1 | // shift 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值,改变原数组。 |
unshift
1 | // unshift 方法可向数组的开头添加一个或更多元素,并返回新的长度,改变原数组。 |
concat
1 | // concat 方法用于连接两个或多个数组,返回新数组。 |
join
1 | // join 方法用于把数组中的所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的,默认使用 ',' 号分隔,不改变原数组,返回字符串。 |
filter
1 | // filter 对数组的每一项都运行给定的函数,返回结果为 true 组成的数组,不改变原数组,返回新数组。 |
every
1 | // every 对数组的每一项都运行给定的函数,每一项都返回 true,则返回 true,不改变原数组,返回 bool。 |
some
1 | // some 对数组的每一项都运行给定的函数,任意一项返回 true,则返回 true,不改变原数组,返回 bool。 |
at
1 | // at 获取指定下标元素,同 array[index]。 |
slice
1 | // slice 返回一个新的数组,包含从 start 到 end (尾部开区间,不包括该元素。)的 selfArray 中的元素,不改变原数组。 |
splice
1 | // splice 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。 |
sort
1 | // sort 排序按照 Unicode Code 位置排序,默认升序,改变原数组。 |
reverse
1 | // reverse 方法用于颠倒数组中元素的顺序,返回的是颠倒后的数组,改变原数组。 |
indexOf
1 | // indexOf 和 lastIndexOf 都接受两个参数:查找的值、查找起始位置。不存在,返回 -1,存在,返回位置。indexOf 是从前往后查找,lastIndexOf 是从后往前查找。 |
find
1 | // find 和 findIndex 传入一个回调函数,找到数组中符合当前搜索规则的第一个元素,返回它,并且终止搜索。findIndex 返回的是下标。 |
fill
1 | // fill(value, start, end) 用新元素替换掉数组内的元素,可以指定替换下标范围(尾部开区间),改变原数组。 |
copyWithin
1 | // copyWithin(target, start, end) 选择数组的某个下标,从该位置开始复制数组元素,默认从 0 开始复制,也可以指定要复制的元素范围(尾部开区间),改变原数组。 |
from
1 | // from 将类似数组的对象(array-like object)和可遍历(iterable)的对象转为真正的数组。 |
of
1 | // of 用于将一组值,转换为数组,这个方法的主要目的,是弥补数组构造函数 Array() 的不足。 |
entries
1 | // entries 返回迭代器,返回键值对。 |
values
1 | // values 返回迭代器,返回键值对的 value。 |
keys
1 | // keys() 返回迭代器,返回键值对的 key。 |
includes
1 | // includes 判断数组中是否存在该元素,参数:查找的值、起始位置,可以替换 ES5 时代的 indexOf 判断方式。 |
flat
1 | // flat 数组降维打击,返回新数组,不改变原数组。 |
对象(Object)
create
1 | // Object.create() 方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__(里面的属性属于新对象自己),其实简单来说就是改变创建对象的原型指向。 |
assign
1 | // Object.assign(target, source1, source2) 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target),若 target 与 source 存在相同属性,则会被后出现的覆盖。拷贝的属性是有限制的,只拷贝源对象的自身属性(不拷贝继承属性),也不拷贝不可枚举的属性(enumerable: false)。 |
toString
- toString 方法返回一个表示该对象的字符串。
对象 | 返回值 |
---|---|
Array | 以逗号分割的字符串,如 [1, 2] 的toString返回值为 1,2 |
Boolean | true |
Date | 可读的时间字符串,如 Tue Aug 25 2020 19:30:17 GMT+0800 (中国标准时间) |
Function | 声明函数的 JS 源代码字符串 |
Number | 数字值 |
Object | [object Object] |
String | 字符串值 |
1 | let num = 3; |
valueOf
- 如果对象存在任意原始值,它就默认将对象转换为表示它的原始值,如果对象是复合值,而且大多数对象无法真正表示为一个原始值,因此默认的 valueOf() 方法简单地返回对象本身,而不是返回一个原始值。
对象 | 返回值 |
---|---|
Array | 数组本身 |
Boolean | 布尔值 |
Date | 返回毫秒形式的时间戳 |
Function | 函数本身 |
Number | 数字值 |
Object | 对象本身 |
String | 字符串值 |
1 | // 数组、函数、和正则表达式简单的继承了这个默认方法,调用这些类型的实例的 valueOf() 方法只是简单返回对象本身。 |
- 原始值:不可变更的值,包括
undefined、null、boolean、number、string
。
一般的转换过程
- 栗子
1 | // 保存原始的 valueOf |
- 最后一处本应该是预期把 newObj 当做字符串使用,先调用 toString 方法的,实际情况其实却不是这样。
- 【基础步骤】如果有一个是对象,则遵循对象对原始值的转换过程 (Date对象直接调用 toString 完成转换,其他对象通过 valueOf 转化,如果转换不成功则调用 toString。)。
- 如果两个都是对象,两个对象都遵循【基础步骤】转换到字符串。
- 两个数字,进行算数运算。
- 两个字符串,直接拼接。
- 一个字符串一个数字,直接拼接为字符串。
keys
1 | // 遍历可枚举的属性,只包含对象本身可枚举属性,不包含原型链可枚举属性。 |
values
1 | // 遍历可枚举的属性值,只包含对象本身可枚举属性值,不包含原型链可枚举属性值。 |
entries
1 | // entries 分割对象,获取键值对。 |
is
1 | // Object.is用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致,但也有差别。 |
hasOwnProperty
1 | // Object.hasOwnProperty 方法会返回一个布尔值,表示对象自身属性中是否具有指定的属性,不包含原型上的属性。 |
isPrototypeOf
1 | // 用于测试一个对象是否存在于另一个对象的原型链上 |
propertyIsEnumerable
1 | // 指定的属性是否可枚举 |
defineProperty
1 | // 定义对象属性,Object.defineProperty(object, prop, do) |
defineProperties
1 | // 同上,但可定义多个。 |
时间(Date)
万能 Date 原型扩展
1 | /* 时间格式参考 php */ |
人性化时间
1 | /** |
时间设置与计算
时间获取可以参考第一部分
1 | let myDate = new Date(); |
Others
1 | let weeks = ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]; |