对象中的静态方法总结:
API方法名
|
作用
|
参数
|
返回值
|
Object.is(a,b)
|
判断a,b两个值是否一致
|
需要判断的值
|
Boolean
|
Object.assign(a,b,c)
|
深复制或者合并对象
|
两个参数:深复制,将b复制给a
三个参数:合并b,c对象,再复制给a
|
返回值为a
|
Object.setPrototypeOf(obj1,obj2)
|
为目标对象设置原型,将obj2设置成obj1的原型
|
两个参数:目标对象,要设置为原型的对象
| |
Object.getPrototypeOf(obj1)
|
获取目标对象的原型
|
要获取的目标对象
| |
Object.keys()
|
取得对象属性名组成的数组
| 目标对象 |
返回对象属性名组成的数组
|
Object.values()
|
取得对象属性值组成的数组
|
目标对象
|
返回对象属性值组成的数组
|
Object.entries()
|
取得对象[属性名,属性值]组成的二维数组
|
目标对象
|
返回组成的二维数组
|
以下是对象静态方法的使用:
1.Object.is()
//Object.is两个值的比较,比较两个值是否一致,结果为Boolean
console.log(1 === 1); //true
console.log(Object.is(1, 1)); //true
//特殊情况:
console.log(+0 === -0); //true
console.log(Object.is(+0, -0)); //false
console.log(NaN === NaN); //false
console.log(Object.is(NaN, NaN)); //true
2.Object.assign()
2.1两个参数时
let obj1 = {}
let obj2 = {
name: '张三',
age: 12
}
Object.assign(obj1, obj2)
console.log(obj1); //{ name: '张三', age: 12 }
console.log(obj1 === obj2); //false
2.2三个参数时:
let obj1 = {}
let obj2 = {
name: '张三',
age: 12
}
let obj3 = {
name: '李四',
gender: '男'
}
Object.assign(obj1, obj2, obj3)
console.log(obj1); //{ name: '李四', age: 12, gender: '男' } 相同的属性会进行覆盖,合并后再复制
3.Object.setPrototype()
let obj1 = {}
let obj2 = {
name: '张三',
age: 12
}
//原型设置
Object.setPrototypeOf(obj1, obj2);
//获取原型的三种方法
console.log(obj1.__proto__); //{ name: '张三', age: 12 } 改变了原型的指向
console.log(obj1.constructor.prototype); //[Object: null prototype] {} 通过构造函数进行访问时,访问的还是原来的原型
console.log(Object.getPrototypeOf(obj1)); //{ name: '张三', age: 12 }
4.Object.keys()/Object.values()/Object.entries()
let obj1 = {
name: 'zhangsan ',
age: 12,
gender: 'male'
}
let keys = Object.keys(obj1);
let values = Object.values(obj1);
let entries = Object.entries(obj1)
console.log(keys, values, entries);
//keys:[ 'name', 'age', 'gender' ]
//values: [ 'zhangsan ', 12, 'male' ]
//entries:[ [ 'name', 'zhangsan ' ], [ 'age', 12 ], [ 'gender', 'male' ] ]
小小的应用:
//可以调用数组中的API了
//遍历
entries.forEach((item, index) => {
console.log(item);
});
/*
[ 'name', 'zhangsan ' ]
[ 'age', 12 ]
[ 'gender', 'male' ]
*/
entries.forEach((item, index) => {
console.log(item[0], item[1]);
});
/*
name zhangsan
age 12
gender male
*/
数组中的扩展API总结:
API方法
|
作用
|
参数
|
返回值
|
Array.from()
|
将其他类型数据传承数组(主要是将类数字对象转化为数组形式)同样只能转化能迭代的数据类型
|
要转化的对象或类数组对象
|
数组形式
|
Array.of()
|
创建数组实例
|
数组元素(可以创建单个元素的数组),对new Array()的补充
|
创建的数组
|
Array.prototype.find()
|
返回满足条件的第一个元素
| 参数为一个回调函数 |
找得到满足条件的元素时,返回满足条件的第一个元素,找不到满足条件的元素时返回undefined
|
Array.prototype.findIndex()
|
返回满足条件的第一个元素的索引
|
回调函数
|
同上,找得到返回满足条件元素的下标,找不到返回-1
|
Array.prototype.includes()
|
判断当前数组中是否包含某个元素
| 目标元素 |
Boolean类型
|
Array.prototypt.fill()
|
填充数组(为所有元素填充)
|
填充的元素
|
返回修改后的数组,会改变原数组
|
Array.prototype.keys()
|
返回索引的迭代器对象
| ||
Array.prototype.values()
|
返回元素的迭代器对象
| ||
Array.prototype.entries()
|
返回键值对的迭代器对象
|
以下是数组的API扩展使用
1.Array.from()
//Array.from只能将可迭代的数据转化为数组:类数组,数组,字符串
//字符串
let obj = 'hello'
let arr1 = Array.from(obj)
console.log(arr1); //[ 'h', 'e', 'l', 'l', 'o' ]
//类数组对象
let arrObj = {
0: 'zhangsan',
1: 'lisi',
2: 'wangwu',
length: 3
}
let arr2 = Array.from(arrObj);
console.log(arr2); //[ 'zhangsan', 'lisi', 'wangwu' ]
2.Array.of()
let arr = new Array(3);
console.log(arr); //[ <3 empty items> ]
// 创建数组实例
let arr3 = Array.of(3);
console.log(arr3); //[ 3 ]
3.Array.find() /Array.findIndex()
//Array.prototype.find
let arr4 = Array.of(1, 2, 3, 4, 5);
let result = arr4.find((item, index) => {
return item > 3
})
console.log(result); //4 返回符合条件的第一个元素
let res = arr4.findIndex((item, index) => {
return item > 3
})
console.log(res); //3 返回符合条件的元素下标
4.Array.includes()
let arr4 = Array.of(1, 2, 3, 4, 5);
let res2 = arr4.includes(3);
console.log(res2); //true 返回是否包含该元素
5.Array.fill()
//填充所有
let res3 = arr4.fill(7)
console.log(res3); //[ 7, 7, 7, 7, 7 ] 将该数组的当前元素全部替换为fill()中的数字 改变原数组
console.log(arr4); //[ 7, 7, 7, 7, 7 ]
6.迭代器
//数组迭代器keys/values/entries
let keys = arr4.keys()
let values = arr4.values()
let entries = arr4.entries()
console.log(keys, values, entries); //Object [Array Iterator] {} 输出迭代器对象
console.log(Array.from(keys)); //[ 0, 1, 2, 3, 4 ]
console.log(Array.from(values)); //[ 1, 2, 3, 4, 5 ]
console.log(Array.from(entries)); //[ [ 0, 1 ], [ 1, 2 ], [ 2, 3 ], [ 3, 4 ], [ 4, 5 ] ]