以下所有的方法都是ES6新增的
1、字符串
1.1 at()方法
作用:
返回字符串给定位置的字符。可以理解为字符串截取,比之前的charAt()好用多了。
例子:
1. 'abc'.at(0) // 'a' 2. 3. "你好".at(0) // '你'
1.2 includes()方法
传统上,只有indexof方法可用来确定一个字符串是否在另一个字符串中,ES6又提供了三种方法,三种分别是includes()、startsWith()、endsWith(),这里只说includes方法,因为它最强大,注意,这个方法在数组、对象上依然可以使用,非常强大。
作用:
includes():返回布尔值,表示是否找到了参数字符串;支持第二个参数,表示开始搜索的位置
例子:
let s = 'hello world!' s.includes('o') //true s.includes('hello',0) //true
1.3 repeat()
这个方法实际作用不大,但是挺好玩的,就放上来了。
作用:
返回一个新字符串,表示将原字符串重复n次
例子:
'x'.repeat(3) // 'xxx' 'hello'.repeat(2) // 'hellohello' 'na'.repeat(0) // '' 参数如果是小数,会被取整 'na'.repeat(2.9) // 'nana' 参数如果是负数或者Infinity,会报错 如果是 0~1 之间的小数,则等同于0 参数NAN等同于0 repeat的参数如果是字符串,则会先转换为数字 'na'.repeat('na') // '' 'na'.repeat('3') // 'nanana'
1.4 padStart() 、padEnd()
作用:
指定字符串长度,填充补足长度
例子:
'x'.padStart(5,'ab') //'ababx' 'x'.padStart(4,'ab') //'abax' 'x'.padEnd(5,'ab') //'xabab' 'x'.padEnd(4,'ab') //'xaba'
2.数组
2.1 Array.from()
作用:
将伪数组(有length长度,可遍历但不能用数组api的)转为真数组
一共有三个参数,第一个是转数组的数据;第二个是类似于map()方法对每个元素进行处理;第三个参数用来绑定this
例子:
let arr = { "0":'a', "1":'b', length:2 } let arr2 = Array.from(arr) //['a','b']
2.2 Array.of()
作用:
将一组值转换为数组。主要目的是弥补数组构造函数Array()的不足
例子:
Array.of(3,11,8) // [3,11,8] Array.of(3) // [3] Array.of(3).length // 1 Array.of() // [] Array.of(undefined) // [undefined]
2.3 copyWithin()
作用:
将指定位置的数据复制到其他位置,这个方法会修改数组
有三个参数:target(必选):从该位置开始替换数据;start(可选):从该位置开始读取,默认为0;end(可选):从该位置前停止读取数据
例子:
[1,2,3,4,5].copyWithin(0,3) // [4,5,3,4,5] //将3号位复制到0号位 [1,2,3,4,5].copyWithin(0,3,4) // [4,2,3,4,5]
2.4 find()和findIndex()
作用:
find用于找出第一个符合条件的数组成员;findindex和find非常类似,返回符合条件的数组成员的位置,找不到返回-1
2.5 fill()
作用:
使用给定值填充数组
例子:
['a','b','c'].fill(7) // [7,7,7] ['a','b','c'].fill(7,1,2) // ['a',7,'c'] 既包括1 但不包括2
2.6 entries()、keys()、values()
作用:
用于遍历数组,返回一个遍历器对象,可用for…of循环遍历
entries():遍历键值对;keys():遍历键;values():遍历值;
2.7 includes()
作用:
表示某个数组是否包含给定的值,和字符串的类似(很强大,很好用,很推荐)
该方法的第二个参数表示搜索的起始位置,默认为0.如果第二个参数为负数则表示倒数的位置,如果这时他大于数组的长度,则会重置为从0开始
[1,2,3].includes(2) // true [1,2,3].includes(4) // false [1,2,NaN].includes(NaN) // true [1,2,3].includes(3,-1) // true [1,2,3].includes(3,3) // FALSE
3.对象
3.1 Object.is()
作用:
比较两个值是否相等;用来比较两个值是否严格相等,与===的行为基本一致;
比较对象的时候,比的是引用地址,不是值哈,比较值思路是比较键、值是否一样
例子:
Object.is('foo','foo') //true
3.2 Object.assign()
作用:
复制对象
第一个参数是目标对象,后面的参数都是源对象;是浅拷贝;
他还有很多作用:
为对象添加属性
为对象添加方法
克隆对象
合并多个对象
为属性指定默认值
例子:
let target = {a:1} let source = {b:2} Object.assign(target,source) target // {a:1,b:2}
3.3 es6属性的遍历
for…in :自身和继承的可枚举属性不包含symbol
Object.keys():自身的可枚举属性不包含symbol
Object.getOwnPropertySymbols():自身的所有symbol属性
Object.getOwnPropertyNames():自身的所有属性不包含symbol,但包括不可枚举属性
Reflect.ownKeys() : 自身所有属性,不管是symbol还是字符串也不管是否可枚举
3.4 Object.keys() 、Object.values()、 Object.entries()
和上面讲的数组的一样的作用
3.5 Null传导运算符
作用:
用来判断对象是否具有某属性
例子:
obj?.prop:读取对象属性 a?.b = 42 // 如果a是null或undefined,这句不产生任何效果,否则执行
3.6 Object.getOwnpropertyDescriptors()
作用:
用来返回某个对象属性的描述对象;返回指定对象所有自身属性(非继承属性)的描述对象;主要是为了解决Object.assign()无法正确复制get属性和set属性的问题
3.7 __proto__属性、Object.setPrototypeof()、 Object.getPrototypeof()
作用:
__proto__属性:读取或者设置当前对象的prototype对象(原型)
let obj = { name:"123" } obj.__proto__ = someOtherObj
Object.setPrototypeof():设置原型对象
Object.getPrototypeof():读取原型对象