javascript 深度克隆(深度拷贝一个对象) prototype __ptoto__ consstructor

本文探讨了JavaScript中的深度克隆与浅度克隆概念,重点解析了原型(prototype)、构造器(constructor)以及原型链的工作原理,帮助理解JavaScript中对象的复制和引用特性。
摘要由CSDN通过智能技术生成

最近看到前端的面试题,是 关于深度克隆还有浅度克隆的

JavaScript按值传递和按引用传递:

JavaScript的基本类型一共五种包括(undefined,Null,boolean,Number,String)这几种都是按照值传递;
还有引用类型(数组和对象)按址传递,引用类型在值传递的时候是传递的地址,也就是说的按引用传递,对于引用传给函数的是变量的地址,
传进去的时候这时候就相当于有了一个变量的地址的拷贝,如果对这个拷贝重新赋值的话,是对原变量没有影响的,但是如果直接对传进去的变量(引用类型)直接操作的话就对外部的变量也会想用的改变;
说的简单一点就是基本类型传进去的是 变量的拷贝,引用类型传进去的是 变量的地址
但是这两种传递方式实质是一样的:
先看第一个代码:
var a=[],
		    b={},
			c={};
		function foo(a,b,c){
			var v1 = Array (1),
				v2 = [2,2],
				v3 = {"x":2};

		}
		foo(a,b,c);
		console.log(a);
		console.log(b);
		console.log(c);

这样虽然传进去的是引用类型,但是对变量地址拷贝进行的改变,这样就和原来的引用没有关系了;
,看下面这个代码
var a = {'a':1};
		var b = a;
		b.b = 2;
		if(a === b){
		console.log(b);
		console.log(a);
		}
这样修改b的值a会改变;
看下面代码:
var v1 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值