Codog

关注微信公众号:Codog代码狗

0%

一个高频面试题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 自己尝试写的,针对数组和对象数据类型,其他更普适的可查看lodash之类的库方法。。
function deepClone(origin) {
// 数组
if(Array.isArray(origin)) {
return origin.map(item => deepClone(item))
}
if(Object.prototype.toString.call(origin) === '[object Object]') {
let res = {}
for(let key in origin) {
res[key] = deepClone(origin[key])
}
return res
}
return origin
}

个人感觉考察点在于数据的类型判断,然手根据相应类型复制数据

在深入一下,深拷贝的问题:

  • 循环引用

需要存储已保存过的数据

  • 递归爆栈

改为while循环,貌似递归都可以进行如此改造

更完整的说明建议阅读:https://yanhaijing.com/javascript/2018/10/10/clone-deep/

Event Emitter也是一个高频面试题目,满足事件订阅、取消、订阅一次,新手实现需要一些时间,总结下来逻辑并不复杂,这里使用class方式实现。

阅读全文 »

某些时候git会出现Permission denied to xxx提示,意思就是认证失败,通常是一台机器上登录多个用户造成的,但我遇到的情况是我就没登录过这个用户。。

找了一圈,方法都是说修改本地密钥,重新配置下就好了,但依然无效。。

后来看说是修改远程方式为SSH连接,结果就正常了🤨

1
git remote set-url origin git@github.com:xxx/xxxxx.git