js Object.assign
时间: 2024-01-01 07:23:40 浏览: 86
Object.assign() 方法用于将所有可枚举的自有属性的值从一个或多个源对象复制到目标对象,并返回目标对象。它的语法如下:
```javascript
Object.assign(target, ...sources)
```
其中,target是目标对象,sources是一个或多个源对象。
下面是一个示例:
```javascript
var obj1 = { a: 1 };
var obj2 = { b: 2 };
var obj3 = { c: 3 };
var target = {};
Object.assign(target, obj1, obj2, obj3);
console.log(target); // 输出:{ a: 1, b: 2, c: 3 }
```
在这个示例中,我们将obj1、obj2和obj3的属性值复制到了target对象中。
相关问题
对象的常用的操作 Object.assign(对象的深复制/浅复制) Object.defineProperty Object.keys Object.values Object.freeze
在中国的JavaScript中,这几个都是关于对象操作的重要工具:
1. `Object.assign()`:这是一个用于合并多个对象到一个新的对象中的方法。它不会创建新的引用,而是将源对象的属性浅复制到目标对象中,如果目标对象已有同名属性,则会被覆盖。例如:
```
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const newObj = Object.assign(obj1, obj2);
// newObj: {a: 1, b: 2}
```
2. `Object.defineProperty()`:这个方法允许你在运行时修改对象的特性(如添加、删除或修改属性的访问器、可枚举性、可配置性和值)。这对于动态控制属性很有帮助。
3. `Object.keys()` 和 `Object.values()` 分别用于获取对象的所有键名和键对应的值(属性值)以数组形式返回。例如:
```
const obj = { a: 1, b: 2 };
const keys = Object.keys(obj); // ["a", "b"]
const values = Object.values(obj); // [1, 2]
```
4. `Object.freeze()`:此方法用于锁定对象,使其不可添加新属性、删除现有属性或改变其自身和原型链上的任何属性。一旦对象被冻结,所有试图修改的行为都会被阻止。
object.assign 跟object.extend区别
object.assign 和 object.extend 都是用来合并多个对象的方法,但二者有着不同的实现和应用场景。
object.assign 方法是 ES6 中新增的,它的作用是将源对象(source)的所有可枚举属性复制到目标对象(target)中。如果目标对象中已存在同名属性,则覆盖其值,如果源对象为 null 或 undefined,则会抛出 TypeError 异常。
示例代码如下:
```
const obj1 = {a: 1, b: 2};
const obj2 = {c: 3};
const obj3 = {a: 4};
const result = Object.assign({}, obj1, obj2, obj3);
console.log(result);
//{a:4, b:2, c:3}
```
此处将 obj1、obj2、obj3 对象合并成了一个新的对象,并返回该新对象。
相比之下,object.extend 是一种常见的扩展对象的方式,通常用于继承和混入。它的实现可依靠 jQuery 等 JS 库,并使用华丽的链式语法。object.extend 方法会将目标对象和源对象的属性合并,且源对象的属性优先。
示例代码如下:
```
const obj1 = {a: 1, b: 2};
const obj2 = {c: 3};
const obj3 = {a: 4};
const result = $.extend({}, obj1, obj2, obj3);
console.log(result);
//{a:4, b:2, c:3}
```
此处同样将 obj1、obj2、obj3 对象合并成了一个新的对象,并返回该新对象。
综上所述,object.assign 和 object.extend 都可以用于合并多个对象,但 object.assign 更适合于一次性合并多个对象,而 object.extend 则更适合于扩展单个对象。
阅读全文