js经典试题之常用的方法

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

  

 

posted @ 2018-02-22 15:29  _林冲  阅读(625)  评论(0编辑  收藏  举报