Object对象
//完整克隆一个对象,还拷贝对象原型的属性
var n = Object.assign(Object.create(Object.getPrototypeOf(拷贝的对象)), 拷贝的对象);
//可以用?.来获取对象属性,如果属性不存在不会报错,属性如果存在会赋值成功
var res = message?.body?.user?.firstName;
//判断对象方法是否存在,如果存在就立即执行
myfunc.run?.()
Object.keys() //获取对象的所有可枚举的属性或者方法
Reflect.ownKeys() //获取对象的所有属性或方法(包括Symbol属性方法)
Object.getOwnPropertyNames() //获取对象的所有属性或方法(不包括Symbol属性方法)
Object.getOwnPropertySymbols() //获取对象的所有Symbol属性或Symbol方法
Object.entries() //获取对象的键值对数组(不包括Symbol)
Object.fromEntries() //将键值对数组转为对象
Object.fromEntries(new URLSearchParams('?name=haha&class=1')) //将字符串转为对象
Array数组
arr7.push(...arr6) //把arr6拆分然后把每个元素push到arr7
arr8 = [...arr7] //复制arr7数组,深拷贝
arr9 = [...arr7, ...arr8] //合并arr7,arr8数组
entries() //返回该数组的所有键值对,value()是键值,keys()是键名
join() //将数组中元素拼接成一个字符串并返回,参数是分隔符,默认以逗号分隔
push() //在数组尾部添加,参数可以是一个或多个,多参数之间使用逗号隔开,返回值是新数组的长度,会改变原始数组
pop() //删除数组最后一项,返回被删除的元素,会改变原始数组
shift() //删除数组第一项,返回被删除的元素,会改变原始数组
unshift() //在数组头部添加,返回数组长度,会改变原始数组
fill("hi",1,3) //在数组1到3的位置的元素依次替换成hi
flat(Infinity) //将数组里嵌套多层的数组拉平,变成一维数组。参数Intinity表示不管有多少层嵌套统统转成一维数组
flatMap() //对原数组的每个元素执行一个函数,然后对返回值组成的数组执行flat()方法。
concat() //数组合并,参数可以是多个数组
slice() //从数组中取出一个范围(切片),参数是起始位置和结束位置
splice() //从数组中取出一个范围(切片)并从原始数组中删除掉,会改变原始数组
copyWithin(0,3,4) //把数组从3到4的位置切片截取移到0的位置并覆盖
map() //对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组
forEach() //对数组中的每一项运行给定函数,这个方法没有返回值。本质上与for循环迭代数组一样。如果需要有返回值,一般使用map方法
String字符串
//字符串中嵌入变量
let name="Bob";var time="today";
var str4 = `Hello ${name}, how are you ${time}?`;
indexOf(value,[fromIndex]) //获取第一次出现字符的下标,从fromindex开始找
slice(1,5) //字符串切片,取出1-5位置的字符
split(param) //以指定的字符分割字符串,返回分割完成的数组
match(正则或字符) //在字符串中查找字符,返回一个数组,matchAll返回所有匹配
replace(正则或字符,newstring) //替换字符中的指定字符,不改变原始字符串
RegExp正则表达式
var reg = new RegExp('href="(.*?)"','g') //g : global 全局匹配
reg.exec() //用以提取href=""中间的内容,注意每次只返回一个结果,如果提取全部需要for循环调用
reg.lastIndex = 0 //表示下一次匹配的起始索引