对象(Object)API:
Object.is(a,b) 判断a,b两个值是否一样,类似于但不等于===
console.log(+0 === -0);//true
console.log(Object.is(+0, -0));//false
console.log(NaN === NaN);//false
console.log(Object.is(NaN, NaN));//true
Object.assign() 深复制或者合并对象
Object.assign(obj1, obj2) 深复制,将obj2复制给obj1
let obj1 = {}
let obj2 = { name: '张三', age: 12 }
Object.assign(obj1, obj2)//复制obj2到obj1
console.log(obj1, obj2);
console.log(obj1 === obj2);//检查是否深复制
Object.assign(obj1, obj2, obj3) 对象合并,将obj2、obj3合并后复制给obj1
let obj1 = {}
let obj2 = { name: '张三', age: 12 }
let obj3 = { name: '李四', gender: 'male' }
Object.assign(obj1, obj2, obj3)
console.log(obj1);
Object.setPrototypeOf(obj1, obj2) 为目标对象设置原型,将obj2设置成obj1的原型
Object.getPrototypeOf(obj1) 获取目标对象的原型
let obj1 = {}
let obj2 = { name: '张三', age: 12 }
Object.setPrototypeOf(obj1, obj2);//将obj2设置成obj1的原型
console.log(obj1.__proto__);//obj1的原型
console.log(obj1.constructor.prototype);obj1的构造函数所指的原型
console.log(Object.getPrototypeOf(obj1));
Object.keys() 返回对象属性名组成的数组
let obj = {
name: 'zhangsan',
age: 12,
gender: 'male'
}
let keys = Object.keys(obj)
console.log(keys);
Object.values() 返回对象属性值组成的数组
let obj = {
name: 'zhangsan',
age: 12,
gender: 'male'
}
let values = Object.values(obj)
console.log(values);
Object.entries() 返回对象[属性名, 属性值]组成的二维数组
let obj = {
name: 'zhangsan',
age: 12,
gender: 'male'
}
let entries = Object.entries(obj)
console.log(entries);
数组(Array)API:
Array.from() 将其他类型数据(可迭代的)转成数组
let arrObj = {
0: 'tom',
1: 'terry',
2: 'jacky',
length: 3
}
let arr = Array.from(arrObj)
let arr2 = Array.from('hello')
console.log(arr,arr2);
Array.of() 创建数组实例,实参就是数组的元素
let arr1 = new Array(1, 2, 3, 4, 5, 6)
let arr2 = new Array(3) // [empty,empty,empty]
console.log(arr1, arr2);
let arr3 = Array.of(3, true, 'str') // [3]
console.log(arr3);
Array.prototype.find() 返回满足条件的第一个元素,参数为函数
let arr1 = new Array(1, 2, 3, 4, 5, 6)
let result = arr1.find((item, index) => {
return item > 3
})
console.log(result); // 4
Array.prototype.findIndex() 返回满足条件的第一个元素的索引,参数为函数
let arr1 = new Array(1, 2, 3, 4, 5, 6)
let result = arr1.findIndex((item, index) => {
return item > 3
})
console.log(result); //3
Array.prototype.includes() 判断当前数组中是否包含某个元素,参数为元素,返回true/false
let arr1 = new Array(1, 2, 3, 4, 5, 6) // [1,2,3]
let result1 = arr1.includes(1)
console.log(result1); // true
Array.prototype.fill() 填充数组(所有元素填充),修改数组原值
let arr1 = new Array(1, 2, 3, 4, 5, 6) // [1,2,3]
let result2 = arr1.fill(7)
console.log(result2, arr1, result2 === arr1);
Array.prototype.() 索引的迭代器对象
Array.prototype.values() 元素的迭代器对象
Array.prototype.entries() 键值对的迭代器对象
let arr1 = ['tom', 'lerry', 'jacky']
let keys = arr1.keys()
let values = arr1.values()
let entries = arr1.entries()
console.log(keys, values, entries);
console.log(Array.from(keys));
console.log(Array.from(values));
console.log(Array.from(entries));
Set集合API:
Set.prototype.size 返回Set实例的成员总数。
let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set);
console.log(set.size);
Set.prototype.add(value) 添加某个值,返回Set结构本身
let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set.add(100));
Set.prototype.delete(value) 删除某个值,返回一个布尔值,表示删除是否成功。
et arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
console.log(set);
let set = new Set(arr)
console.log(set.delete(1));
console.log(set);
Set.prototype.has(value) 返回一个布尔值,表示该值是否为Set的成员。
let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set);
console.log(set.has(100));
Set.prototype.clear() 清除所有成员,没有返回值。
let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set);
set.clear()
console.log(set);
Set.prototype.keys() 返回键名的遍历器
Set.prototype.values() 返回键值的遍历器
Set.prototype.entries() 返回键值对的遍历器
let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr);
console.log(set.keys());
console.log(set.values());
console.log(set.entries());
Set.prototype.forEach() 使用回调函数遍历每个成员
let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
set.forEach(item => {
console.log(item);
})
Map集合API:
Map.prototype.size 返回 Map 结构的成员总数。
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
console.log(entries);//[ [ 'name', 'zhangsan' ], [ 'age', 12 ], [ 'gender', '男' ] ]
let map = new Map(entries);
console.log(map);//Map(3) { 'name' => 'zhangsan', 'age' => 12, 'gender' => '男' }
console.log(map.size);//3
Map.prototype.set(key, value) set方法设置键名key对应的键值为value,然后返回整个map结构。如果key已经有值,则键值会被更新,否则就新生成该键。
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
map.set(true, false)//添加
map.set('age',13)修改
console.log(map);
Map.prototype.get(key) get方法读取key对应的键值,如果找不到key,返回undefined。
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map.get('gender')); //男
console.log(map.get('father')); //undefined
Map.prototype.has(key) has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map.has('age')); //true
console.log(map.has(true)); //false
Map.prototype.delete(key) delete方法删除某个键,返回true。如果删除失败,返回false。
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map);
console.log(map.delete('age')); //true
console.log(map.delete('father')); //false
console.log(map);
Map.prototype.clear() 清除所有成员,没有返回值
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map);
map.clear()
console.log(map);
Map.prototype.keys() 返回键名的遍历器
Map.prototype.values() 返回键值的遍历器
Map.prototype.entries() 返回键值对的遍历器
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
let keys = map.keys()
let values = map.values()
let entries1 = map.entries()
console.log(keys);
console.log(values);
console.log(entries1);
Map.prototype.forEach() 使用回调函数遍历每个成员
let obj = {
name: 'zhangsan',
age: 12,
gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
map.forEach((value, key) => {
console.log(value, key);
})