亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

深度復制對象。被復制的對象類型會被限制為數字、字符串、布爾、日期、數組、Object對象。不會包含函數、正則對象等

深度復制對象。被復制的對象類型會被限制為數字、字符串、布爾、日期、數組、Object對象。不會包含函數、正則對象等

慕尼黑8549860 2019-04-19 15:59:10
實現了深度復制對象,但是如何限制類型呢?functionisClass(o){if(o===undefined){return"Undefined";}else{returnObject.prototype.toString.call(o).slice(8,-1);}}functioncloneObject(src){varresult,oClass=isClass(src);if(oClass==="Object"){result={};}elseif(oClass==="Array"){result=[];}else{returnsrc;}for(keyinsrc){varcopy=src[key];if(isClass(copy)=="Object"||"Array"){result[key]=arguments.callee(copy);}else{result[key]=src[key];}}returnresult;}
查看完整描述

2 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

函數槽點比較多..兩次判斷類型造成資源浪費,而且isClass(o)==="Object"||"Array"這句很顯然是大錯特錯的,太想當然了。另外arguments.callee手冊已經不推薦使用了,直接使用函數名會好一點。
functioncloneObject(src){
varresult;
switch(isClass(src)){
case"Array":result=[];break;
case"Object":result={};break;
/**如果是要過濾掉Function和RegExp的話**/
case"RegExp":
case"Function":returnnull;break;
/**結束**/
default:returnsrc;break;
}
for(keyinsrc){
varcopy=cloneObject(src[key]);
if(copy!=null)result[key]=copy;
}
returnresult;
}
                            
查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號