对象和数组的API拓展

一、对象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 ] ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值