js经典试题之常用的方法
1、下面代码输出的值
let s = "bob" const replaced = s.replace('b', 'l') replaced === "lob" s === "bob"
答案: true true
解析:replace 只会替换第一个匹配的字符串,如果你想替换所有匹配的字符串,你可以使用带/g标志的正则表达式 。
"bob".replace(/b/g, 'l') === 'lol' // 替换所有匹配的字符串
2、深度拷贝兼容写法
function deepCopy(obj) { if (typeof obj !== 'object') return obj; if (typeof window !== 'undefined' && window.JSON) { // 浏览器环境下 并支持window.JSON 则使用 JSON return JSON.parse(JSON.stringify(obj)); } else { let newObj = obj.constructor === 'Array' ? [] : {}; for(let key in obj) { newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key]; } return newObj; } } let obj = {a: 1, b: [12]}; let newObj = deepCopy(obj); newObj.b[1] = 100; console.log(obj); console.log(newObj);