Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 判断 JS 对象中是否存在循环引用
- */
- let stack = []; // 存在对象中已经出现的对象
- /**
- * @params {Object} obj 需要检查的对象
- */
- function checkObjCircularReference (obj) {
- for (let i = 0, len = stack.length; i < len; i++) {
- if (stack[i] === obj) { // 出现重复的对象
- console.log('found CircularReference');
- throw TypeError();
- };
- };
- stack.push(obj);
- for(let key in obj){
- let value = obj[key];
- if (typeof value === 'object') { // 对象类型去检查
- checkObjCircularReference(value);
- };
- };
- // 检查结束
- console.log('not found CircularReference');
- stack = [];
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement