深拷贝的三种实现方式

如题所述

深拷贝的三种实现方式如下:

1、使用递归的方式实现深拷贝

//使用递归的方式实现数组、对象的深拷贝functiondeepClone1(obj){

//判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝

varobjClone=Array、isArray(obj)?[]:{};

//进行深拷贝的不能为空,并且是对象或者是

if(obj&&typeofobj==="object"){

for(keyinobj){

if(obj、hasOwnProperty(key)){

if(obj[key]&&typeofobj[key]==="object"){

objClone[key]=deepClone1(obj[key]);

2、通过JSON对象实现深拷贝

//通过js的内置对象JSON来进行数组对象的深拷贝

functiondeepClone2(obj){

var_obj=JSON、stringify(obj),

objClone=JSON、parse(_obj);

returnobjClone;

}JSON对象实现深拷贝的一些问题

3、通过jQuery的extend方法实现深拷贝

vararray=[1,2,3,4];

varnewArray=$、extend(true,[],array);

构造函数

在C++面向对象程序设计中,通过构造函数对对象进行初始化,它可以为对象在计算机内存中开辟内存空间,也可以为对象的数据成员提供初始值。构造函数是一个与类同名,没有返回值的特殊成员函数,每当创建一个对象时(包括使用new动态创建对象),编译系统就会自动调用构造函数。

构造函数象类以外的一般函数和类成员函数一样可以重载和带缺省参数,构造函数的重载为对象的生成提供了各种灵活的手段。

构造函数分为缺省构造函数(默认构造函数)和用户自定义构造函数。当程序员没有定义构造函数时,系统会提供一个无参的缺省构造函数。如果用户自定义了一个构造函数,编译器提供的缺省构造函数就自动消失了。

温馨提示:答案为网友推荐,仅供参考
相似回答