将之前写的判断链表是否有环的方法扩展到所有对象,写一个函数has_cycle判断任何一个对象是否有循环引用的情况。
答案:
function has_cycle(obj, m = new WeakMap()){if(typeof obj !== 'object') {return false}if(m[obj]) return truem[obj] = trueconst props = Object.getOwnPropertyNames(obj)return !!props.find(prop => has_cycle(obj[prop], m)) || false}
