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