js中的Object.values()方法和Object.assign() 方法

本文详细介绍了JavaScript中的Object.assign()方法,用于合并对象属性,以及Object.values()方法,用于获取对象的可枚举属性值数组。两者在处理对象操作时提供便利,但Object.assign()进行浅拷贝且可能覆盖已有属性。
摘要由CSDN通过智能技术生成

1:Object.assign() 方法:

                Object.assign() 是一个用于复制对象属性的方法。

                Object.assign() 方法是ES6中引入的一个非常有用的工具,它允许你将一个或多个源对象的所有可枚举属性复制到目标对象中。这个方法接受目标对象作为其第一个参数,然后接受一个或多个源对象作为后续参数。完成复制后,该方法返回目标对象。以下是一些关键点:

                基本用法:

        你可以使用 Object.assign() 来合并多个对象的属性到一个目标对象中。例如,如果你有一个空对象 target 和两个源对象 source1 与 source2,通过调用 Object.assign(target, source1, source2),target 对象将会包含 source1 和 source2 的所有可枚举属性。
                返回值:

        Object.assign() 方法的返回值是目标对象,这意味着你可以链式调用或者在需要时直接使用返回结果。
                注意事项:

                在使用 Object.assign() 时,需要注意以下几点:
        它只复制源对象的可枚举属性,不包括不可枚举属性和继承的属性。
Object.assign() 进行的是浅拷贝,如果源对象的属性值本身是对象,则复制的是引用地址,而不是创建一个新的对象副本。
         如果目标对象和源对象有同名属性,那么目标对象中的属性将被源对象中的属性覆盖。
对于原始类型包装对象(如 Number、Boolean、String 等),Object.assign() 会将其转换为对应的基本类型值后再进行复制。
         综上所述,Object.assign() 是一个非常实用的JavaScript方法,它简化了对象属性合并的过程,并且在处理一些常见的对象操作时提供了便利。

        使用 Object.assign() 方法的示例:

// 定义两个源对象
const source1 = { a: 1, b: 2 };
const source2 = { c: 3, d: 4 };

// 创建一个空的目标对象
const target = {};

// 使用 Object.assign() 将源对象的属性复制到目标对象中
Object.assign(target, source1, source2);

// 输出目标对象的内容
console.log(target); // { a: 1, b: 2, c: 3, d: 4 }

        在上面的示例中,我们首先定义了两个源对象 source1source2,它们分别包含一些属性。然后,我们创建了一个空的目标对象 target。接下来,我们使用 Object.assign() 方法将 source1source2 的所有可枚举属性复制到 target 对象中。最后,我们通过 console.log() 打印出 target 对象的内容,可以看到它包含了 source1source2 的所有属性。

这个例子展示了如何使用 Object.assign() 方法来合并多个对象的属性到一个目标对象中,并验证了该方法返回的是目标对象本身。

2.Object.values()方法:

        Object.values(obj) 方法是 JavaScript 中的一个内置函数,用于返回给定对象自身的所有可枚举属性值的数组。这个方法不会改变原始对象。

        Object.values() 方法的使用示例:

// 定义一个对象
const person = {
  name: "Alice",
  age: 25,
  country: "Wonderland"
};

// 使用 Object.values() 获取对象的所有属性值
const values = Object.values(person);

// 输出结果:["Alice", 25, "Wonderland"]
console.log(values);

        在这个例子中,我们有一个名为 person 的对象,它包含三个属性:nameagecountry。通过调用 Object.values(person),我们得到一个包含这些属性值的新数组 values。这个数组直接反映了对象的属性值,按照它们在对象中出现的顺序排列。

需要注意的是,Object.values() 仅返回对象自身的属性值,不包括从原型链上继承的属性值。此外,如果属性值本身是一个对象,则返回的是该对象的引用,而不是其属性值的数组。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值