对象中的静态方法和数组的拓展API

对象中的静态方法总结:

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 ] ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值