| 2609 | } |
| 2610 | |
| 2611 | function _traverse (val, seen) { |
| 2612 | var i, keys; |
| 2613 | var isA = Array.isArray(val); |
| 2614 | if ((!isA && !isObject(val)) || !Object.isExtensible(val)) { |
| 2615 | return |
| 2616 | } |
| 2617 | if (val.__ob__) { |
| 2618 | var depId = val.__ob__.dep.id; |
| 2619 | if (seen.has(depId)) { |
| 2620 | return |
| 2621 | } |
| 2622 | seen.add(depId); |
| 2623 | } |
| 2624 | if (isA) { |
| 2625 | i = val.length; |
| 2626 | while (i--) { _traverse(val[i], seen); } |
| 2627 | } else { |
| 2628 | keys = Object.keys(val); |
| 2629 | i = keys.length; |
| 2630 | while (i--) { _traverse(val[keys[i]], seen); } |
| 2631 | } |
| 2632 | } |
| 2633 | |
| 2634 | /* */ |
| 2635 | |