Object.assign 合并多个对象的属性,如果是对象有同名属性,则后面对象的属性值覆盖前面的。

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

<script>
	const target = { a: 1, b: 2 };
	const source = { b: 4, c: 5 };

	const returnedTarget = Object.assign(target, source);

	console.log(target);
	// expected output: Object { a: 1, b: 4, c: 5 }

	console.log(returnedTarget);
	// expected output: Object { a: 1, b: 4, c: 5 }
</script>

语法
Object.assign(target, ...sources)

参数

target   目标对象。

sources    源对象。

返回值     目标对象。

描述
如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。

Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象。该方法使用源对象的[[Get]]和目标对象的[[Set]],所以它会调用相关 getter 和 setter。因此,它分配属性,而不仅仅是复制或定义新的属性。如果合并源包含getter,这可能使其不适合将新属性合并到原型中。为了将属性定义(包括其可枚举性)复制到原型,应使用Object.getOwnPropertyDescriptor()和Object.defineProperty() 。

String类型和 Symbol 类型的属性都会被拷贝。

在出现错误的情况下,例如,如果属性不可写,会引发TypeError,如果在引发错误之前添加了任何属性,则可以更改target对象。

注意,Object.assign 不会在那些source对象值为 null 或 undefined 的时候抛出错误。

引用:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

  

这里必须引用jQuery.js库才可以

$.extend()合并多个对象,后面对象属性覆盖前面对象属性
/*$.extend( target [, object1 ] [, objectN ] )
$.extend( [deep ], target, object1 [, objectN ] )

deep	可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。
target	Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
object1	可选。 Object类型 第一个被合并的对象。
objectN	可选。 Object类型 第N个被合并的对象。*/

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>

<div id="log"></div>
<script>
$(function () {
	var object1 = {
		apple: 0,
		banana: {weight: 52, price: 100},
		cherry: 97
	};
	var object2 = {
		banana: {price: 200},
		durian: 100
	};
	/* object2 合并到 object1 中 */
	$.extend(object1, object2);
	var printObj = typeof JSON != "undefined" ? JSON.stringify : function(obj) {
		var arr = [];
		$.each(obj, function(key, val) {
			var next = key + ": ";
			next += $.isPlainObject(val) ? printObj(val) : val;
			arr.push( next );
		});
		return "{ " +  arr.join(", ") + " }";
	};
	$("#log").append( printObj(object1) );
})
</script>

</body>
</html>

  

原文地址:https://www.cnblogs.com/Knowledge-is-infinite/p/12093212.html

时间: 2024-10-09 14:22:38

Object.assign 合并多个对象的属性,如果是对象有同名属性,则后面对象的属性值覆盖前面的。的相关文章

真正掌握vuex的使用方法(二)现在有的小伙伴是不是在想,以后如果我要在这里写自己的计算属性怎么办?怎么办?咱们可以通过对象合并的方法去实现。 通过Object.assign()合并对象:

从上篇文章当中相信大家已经对vuex有了一些大概了解了,接下来咱们结合实例来继续敲代码吧!切记一定要动手实操练习一遍! 接下来咱们来完成一个超级简单的投票功能!要求很简单,点击"投票"按钮,相应的票数会发生加1的变化,另外总票数为所有票数之和,如图所示: 1.首先通过vue-cli生成一个名字叫做demo的项目 vue init webpack demo 2.项目搭建完成以后,安装vuex npm install vuex --save 3.在src目录下创建vuex文件夹,然后在该文

对象合并去重 ,后面的覆盖前面的

let fieldArr = [...initFieldArr, ...filterNullSort] data.fieldInfo = Array.from(fieldArr.reduce((result, item) => result.set(item.id, item), new Map()).values()) 原文地址:https://www.cnblogs.com/binglove/p/12165804.html

ES6对象方法Object.assign()

1  基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). [javascript] view plain copy var target = { a: 1 }; var source1 = { b: 2 }; var source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3} Object.ass

es6 javascript对象方法Object.assign()

es6 javascript对象方法Object.assign() 2016年12月01日 16:42:34 阅读数:38583 1  基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). [javascript] view plain copy var target = { a: 1 }; var source1 = { b: 2 }; var source2 = { c: 3 }; Object.assig

ES6中Object.assign() 方法

1. 对象合并Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上.如下代码演示: var target = {a: 0}; var source1 = {b: 1}; var source2 = {c: 2}; Object.assign(target, source1, source2); console.log(target); // 输出 {a: 0, b: 1, c: 2} 1-1 如果目标对象与源对象有同名属性,或多个源对象有同名

Object.assign()方法

转载:http://www.cnblogs.com/zhaowenxin/p/6160676.html 对象的扩展 1.ES6中,对象的属性和方法可简写:对象的属性值可不写,前提是属性名已经声明: 1 var name = "zhangsan"; 2 var password = "1111111"; 3 var obj = { 4 name, 5 password, 6 arr:[1,2,3,4], 7 sayName(){ 8 console.log(this.

javascript学习总结之Object.assign()方法详解

最近再写ES6的文章时候发现自己对Object.assign()方法不太了解,之前也没有接触过所以就就查阅了相关的资料,为了自己以后肯能会用到以及对知识进行巩固,所以在这里记录下自己学习的点点滴滴,毕竟好记性不如然笔筒,废话不多说,直接上干货. 官方解释:Object.assign方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法:Object.assign(target,...sources) 参数: target:目标对象 sources:源对象 返回值:

ES6的Object.assign()基本用法

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). 例如: const target = {a:1}, const source1 = {b:2} const source2 = {c:3}; Object.assign(target, source1,source2); target   // {a:1,b:2,c:3} Object.assign  方法的第一个参数是目标对象,后面的参数都是源对象. 注意:如果目标对象与源

ES6中Object.assign()和Object.create()

Object.assign() 语法:Object.assing(target,…sources) 一.合并对象 const first = { name: "Bob" }; const last = { lastName: "Smith" }; let person = Object.assign(first, last); console.log(person);/*{ name: 'Bob', lastName: 'Smith' }*/ 二.克隆对象 cons