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);