一、对象API的拓展
Object.is()
Object.assign()
Object.assign()
Object.assign()
Object.setPrototypeOf()
Object.getPrototypeOf()
Object.keys()
Object.values()
Object.entries()
1. Object.is():判断a,b两个值是否相等,类似于===
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 Object.assign(obj1, obj2) 深复制,将obj2复制给obj1
let obj1={};
let obj2={
name:'zhangsan',
age:20
};
Object.assign(obj1,obj2);
console.log(obj1);
//结果:{ name: 'zhangsan', age: 20 }
2.2 Object.assign(obj1, obj2, obj3) 对象合并,将obj1、obj3合并后复制给obj1
let obj1={};
let obj2={
name:'zhangsan',
age:20
};
let obj3={
name:'lisi',
gender:'男'
};
Object.assign(obj1,obj2,obj3);
console.log(obj1);
//结果:{ name: 'lisi', age: 20, gender: '男' }
3.Object.setPrototypeOf():为目标对象设置原型
let obj1={};
let obj2={
name:'zhangsan',
age:20
};
Object.setPrototypeOf(obj1,obj2);
console.log(obj1.__proto__);
console.log(obj1.constructor.prototype);
/*
结果:{ name: 'zhangsan', age: 20 }
[Object: null prototype] {}
*/
4.Object.getPrototypeOf():获取目标对象的原型
let obj1={}
let obj2={
name:'zhangsan',
age:20
}
// 结果:[Object: null prototype] {}
5.Object.keys():返回对象属性名组成的数组
Object.values():返回对象属性值组成的数组
Object.entries():返回对象[属性名, 属性值]组成的二维数组
let obj1={
name:"zhangsan",
age:20,
gender:"male"
}
let keys=Object.keys(obj1);
let values=Object.values(obj1);
let entries=Object.entries(obj1);
console.log(keys,values,entries);
// 结果:[ 'name', 'age', 'gender' ]
// [ 'zhangsan', 20, 'male' ]
// [ [ 'name', 'zhangsan' ], [ 'age', 20 ], [ 'gender', 'male' ] ]
二、数组API的拓展
Array.from()
Array.of()
Array.prototype.find()
Array.prototype.findIndex()
Array.prototype.includes()
Array.prototype.fill()
Array.prototype.keys()
Array.prototype.values()
Array.prototype.entries()
1. Array.from():将其他类型数据转成数组
let obj='hello';
let arr1=Array.from(obj);
console.log(arr1);
//结果:[ 'h', 'e', 'l', 'l', 'o' ]
2.Array.of():创建数组实例,实参就是数组的元素
let arr1=Array.of(3,2,3,'hello');
console.log(arr1);
//结果:[ 3, 2, 3, 'hello' ]
3.Array.prototype.find():返回满足条件的第一个元素,不满足条件则返回undefined,参数为函数
let arr1=Array.of(1,2,3,4,5,6);
let result=arr1.find((item,index)=>{
return item>2
})
console.log(result);
//结果:3
4.Array.prototype.findIndex():返回满足条件的第一个元素的索引,参数为函数
let arr1=Array.of(1,2,3,4,5,6);
let result=arr1.findIndex((item,index)=>{
return item>2
})
console.log(result);
//结果:2
5.Array.prototype.includes():判断当前数组中是否包含某个元素,参数为元素,返回true/false
let arr1=Array.of(1,2,3,4,5,6);
let result1=arr1.includes(10);
console.log(result1);
//结果:false
6.Array.prototype.fill():填充数组(所有元素填充),修改数组原值
let arr1=Array.of(1,2,3,4,5,6);
let result2=arr1.fill(7);
console.log(result2);//填充原数组 修改原值 [ 7, 7, 7, 7, 7, 7 ]
console.log(result2===arr1);//(改变原数组arr1) true
console.log(arr1);// [ 7, 7, 7, 7, 7, 7 ]
7.Array.prototype.keys():返回索引的迭代器对象
Array.prototype.values():返回元素的迭代器对象
Array.prototype.entries():返回键值对的迭代器对象
let arr1=Array.of(1,2,3,4,5,6);
let keys=arr1.keys();
let values=arr1.values();
let entries=arr1.entries();
console.log(keys,values,entries);
//结果:
//Object [Array Iterator] {}
//Object [Array Iterator] {}
//Object [Array Iterator] {}
console.log(Array.from(keys));//[ 0, 1, 2, 3, 4, 5 ]
console.log(Array.from(values));//[ 1, 2, 3, 4, 5, 6 ]
console.log(Array.from(entries));//[ [ 0, 1 ], [ 1, 2 ], [ 2, 3 ], [ 3, 4 ], [ 4, 5 ], [ 5, 6 ] ]