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