JAVAscript—[对象拷贝的方法]

一、json方法

语法:JSON.stringify(value[, replacer[, space]])
(1)value—必需, 要转换的 JavaScript 值(通常为对象或数组)
(2)replacer—可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
(3)space—可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
语法:JSON.parse(text[, reviver])
(1)text—必需, 一个有效的 JSON 字符串。
(2)reviver—可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

1.JSON对象的深度克隆。方法是先JSON.stringify() 转为json字符串, 再JSON.parse() 转为json数组
2. 如果你的对象里有函数, 函数无法被拷贝下来,无法拷贝copyObj对象原型链上的属性和方法

var obj = {
   
				x: 1,
				y: {
   
					a: 1,
					b: 0,
					c: [1, 2, 3]
				}
			};
			// 相同的引用
			var obj2 = obj;
			console.log(obj2 == obj); //true 直接复制只是复制对象的指针,还指向同一个对象
			//不同的引用
			var obj3 = JSON.parse(JSON.stringify(obj));
			console.log(obj3 == obj) //false  通过json方法复制后的地址不一样
			console.log(obj3);

二.、jQuery.extend方法(函数用于将一个或多个对象的内容合并到目标对象)

语法:$.extend( [deep ], target, object1 [, objectN ] )
(1)deep—可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。
(2)target— Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
(3)object1—可选。 Object类型 第一个被合并的对象。
(4)objectN—可选。 Object类型 第N个被合并的对象。

1.如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
2.如果多个对象具有相同的属性,则后者会覆盖前者的属性值。

var obj = {
   
			    x: 1,
			    y: {
   
			        a: 1,
			        b: 0,
			        c: [1, 2, 3]
			    }
			};
			var obj2 = $.extend({
   }, obj);
			console.log(obj2 == obj) //false  复制后的地址不一样
			console.log(obj2);

三.、Object.create()方法

语法:Object.create(proto, [propertiesObject])
(1)proto—必须。表示新建对象的原型对象,即该参数会被赋值到目标对象(即新对象,或说是最后返回的对象)的原型上。该参数可以是null, 对象, 函数的prototype属性 (创建空的对象时需传null , 否则会抛出TypeError异常)
(2)propertiesObject—可选。 添加到新创建对象的可枚举属性(即其自身的属性,而不是原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()的第二个参数。

方法创建一个新对象,使用现有的对象来提供新创建的对象的proto

var obj = {
   
				x: 1,
				y: {
   
					a: 1,
					b: 0,
					c: [1, 2, 3]
				
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值