深拷貝的三種實現方式如下:
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動態創建對象),編譯系統就會自動調用構造函數。
構造函數象類以外的壹般函數和類成員函數壹樣可以重載和帶缺省參數,構造函數的重載為對象的生成提供了各種靈活的手段。
構造函數分為缺省構造函數(默認構造函數)和用戶自定義構造函數。當程序員沒有定義構造函數時,系統會提供壹個無參的缺省構造函數。如果用戶自定義了壹個構造函數,編譯器提供的缺省構造函數就自動消失了。