| 2617 | } |
| 2618 | |
| 2619 | function _traverse (val, seen) { |
| 2620 | var i, keys; |
| 2621 | var isA = Array.isArray(val); |
| 2622 | if ((!isA && !isObject(val)) || !Object.isExtensible(val)) { |
| 2623 | return |
| 2624 | } |
| 2625 | if (val.__ob__) { |
| 2626 | var depId = val.__ob__.dep.id; |
| 2627 | if (seen.has(depId)) { |
| 2628 | return |
| 2629 | } |
| 2630 | seen.add(depId); |
| 2631 | } |
| 2632 | if (isA) { |
| 2633 | i = val.length; |
| 2634 | while (i--) { _traverse(val[i], seen); } |
| 2635 | } else { |
| 2636 | keys = Object.keys(val); |
| 2637 | i = keys.length; |
| 2638 | while (i--) { _traverse(val[keys[i]], seen); } |
| 2639 | } |
| 2640 | } |
| 2641 | |
| 2642 | /* */ |
| 2643 | |