function deepClone1(obj, hash = new WeakMap()){ if(hash.has(obj)){ return hash.get(obj) } if(!isObject(obj)){ return obj } let newObj let constructor = obj.constructor switch(constructor){ case Date: return new Date(obj); case RegExp: return new RegExp(obj) case Number: case String: case Boolean: default: newObj = new constructor(obj) hash.set(obj, newObj) } Reflect.ownKeys(obj).forEach(key => { newObj[key] = deepClone(obj[key],hash) }) return newObj}function isObject(obj){ return obj !== null && typeof obj === 'object'}function deepClone(val,map = new WeakMap()){ if(val === null || typeof val !=='object') return val; //循环引用 if(map.has(val)) return map.get(val); let clone = Array.isArray(val) ? [] : {}; map.set(val,clone); // 获取对象中所有的属性名(包含Symbol值) let keys = Reflect.ownKeys(val); console.log(keys) let len = keys.length; while(len--){ console.log(keys[len]) clone[keys[len]] = deepClone(val[keys[len]],map); } return clone;}// deepClone1([2,4,{a:1}])function checkNumber(val){ return typeof val === 'string' && !isNaN(Number(val))}function getNumber(val){ if(typeof val === 'number'){ return val } if(!isNaN(Number(val))){ return Number(val) } return 0}function add(num1, num2){ if(checkNumber(num1) && checkNumber(num2)){ let arr1 = num1.split('').reverse() let arr2 = num2.split('').reverse() let temp = 0; let len = Math.max(arr1.length, arr2.length) let result = [] for(let i = 0; i<= len; i++){ temp = getNumber(arr1[i]) + getNumber(arr2[i]) + temp result[i] = temp % 10 temp = temp > 9 ? 1 : 0 } result.reverse() return result[0] > 0 ? result.join('') : result.join('').slice(1) }}add('111324324', '3241412342134')