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