常见的Object.assign()、Object.key()、Object.values()、Object.entries()的用法

Object.assign()

该方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
语法:Object.assign(target,…sources)
参数说明:target:目标对象。…sources:源对象。
返回值:
目标对象。
例子:

var a = {
  name: "lisa",
  age: 12,
  color: "red"
};
var c = Object.assign({ address: "beijing" }, a);
console.log(c);//结果为{address: "beijing", name: "lisa", age: 12, color: "red"}
console.log(a);//{name: "lisa", age: 12, color: "red"}

Object.assign并不会改变源对象,但是会改变目标对象,如下例子:

var a = {
  name: "lisa",
  age: 12,
  color: "red"
};
var b={
    job:"teacher"
}
var c = Object.assign(b, a);
console.log(b);//结果{job: "teacher", name: "lisa", age: 12, color: "red"}

上述例子中b的结果被改变了。

注:
如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。

Object.key()

读取对象的所有属性。
1.例如,传入一个对象,返回包含对象可枚举的属性

var obj = {
    name: 'lisa',
    age: 12,
    say: function() {
        alert("Hello World");
    }
}
console.log(Object.keys(obj)); // ['name','age','say']
注:Object.keys()的结果为一个数组,上面的里面还可以通过length读取属性的个数,Object.keys(obj).length输出结果为3   

2.例如,传入一个字符串,返回字符串索引值

var myStr="Hello World"
console.log(Object.keys(myStr));
//打印结果为["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

3.例如,传入一个数组,返回索引值

var arr=['a','b','c'];
console.log(Object.keys(arr));
//结果为['0','1','2']

Object.values()

方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for…in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
语法:Object.values(obj)
参数:obj:被返回可枚举属性值的对象。
返回值:一个包含对象自身的所有可枚举属性值的数组。
描述:Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。
如下例子:

var obj = {
  name: "lisa",
  color: "red",
  age: 12
};
console.log(Object.values(obj));//结果为["lisa", "red", 12]

Object.entries()

语法:Object.entries(obj)
参数:obj:可以返回其可枚举属性的键值对的对象。
返回值:给定对象自身可枚举属性的键值对数组。注意:返回的是一个数组。
描述:Object.entries()返回一个数组,其元素是与直接在object上找到的可枚举属性键值对相对应的数组。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
如下例子:

const obj1 = { name: "lisa", age: 12, color: "red" };
console.log(Object.entries(obj1));//[["name", "lisa"],["age", 12],["color", "red"]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值