Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. /**
  2. * 判断 JS 对象中是否存在循环引用
  3. */
  4. let stack = []; // 存在对象中已经出现的对象
  5.  
  6. /**
  7. * @params {Object} obj 需要检查的对象
  8. */
  9. function checkObjCircularReference (obj) {
  10. for (let i = 0, len = stack.length; i < len; i++) {
  11. if (stack[i] === obj) { // 出现重复的对象
  12. console.log('found CircularReference');
  13. throw TypeError();
  14. };
  15. };
  16. stack.push(obj);
  17. for(let key in obj){
  18. let value = obj[key];
  19. if (typeof value === 'object') { // 对象类型去检查
  20. checkObjCircularReference(value);
  21. };
  22. };
  23. // 检查结束
  24. console.log('not found CircularReference');
  25. stack = [];
  26. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement