ネイティブクローンJSパッケージの色合い

`ジャバスクリプト:実行
機能deepOrShallowClone(){
VAR対象= NULL;
VaRのarguments0 =引数[0]。
VaRのlastArguments =引数[arguments.lengthを- 1]。
//首次执行arguments.lengthを为2、后来递归执行arguments.lengthを为3
IF(arguments0 === TRUE){
IF({} .toString.call(lastArguments)=== "[Object配列]"){
/ /{}.toString.call也可以用Object.prototype.toString.call代替
標的= [];
}
IF({} .toString.call(lastArguments)=== "[対象オブジェクト]"){
対象= {};
}
(lastArgumentsにおけるVARキー){ための
VaRの値= lastArguments [キー]。
VaRのでIsArray = {} .toString.call(値)=== "[オブジェクト配列]"。
VAR ISOBJECT = {} .toString.call(値)=== "
IF(でIsArray || ISOBJECT){
IF(でIsArray){
VARクローン= [];
}
IF(ISOBJECT){
VARクローン= {};
}
はconsole.log(「I深いクローン、再び再帰通過以下ここで「);
標的[キー] = deepOrShallowClone(真、クローン、値);
} {他の
標的[キー] =値;
}
}
}偽の他IF(arguments0 ===){
[1]目標=引数;
}そう{
対象= arguments0;
}
戻り対象;
}
VARのbeforeClone = {:. 1、B:[2、{C :. 3、D:{E :. 4、F:[5、{G :. 6}]}}]} ;
VAR = afterShallowClone1 deepOrShallowClone(beforeClone);
VAR(falseに、beforeClone)= afterShallowClone2 deepOrShallowClone。
VAR afterDeepClone = deepOrShallowClone(真、beforeClone)。
console.log(afterShallowClone1)。
console.log(afterShallowClone2)。
console.log(afterDeepClone)。
`` `

おすすめ

転載: www.cnblogs.com/gushixianqiancheng/p/10962894.html