* Attempt to create an observer instance for a value, * returns the new observer if successfully observed, * or the existing observer if the value already has one.
(value, asRootData)
| 787 | * or the existing observer if the value already has one. |
| 788 | */ |
| 789 | function observe (value, asRootData) { |
| 790 | if (!isObject(value)) { |
| 791 | return |
| 792 | } |
| 793 | var ob; |
| 794 | if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { |
| 795 | ob = value.__ob__; |
| 796 | } else if ( |
| 797 | observerState.shouldConvert && |
| 798 | !isServerRendering() && |
| 799 | (Array.isArray(value) || isPlainObject(value)) && |
| 800 | Object.isExtensible(value) && |
| 801 | !value._isVue |
| 802 | ) { |
| 803 | ob = new Observer(value); |
| 804 | } |
| 805 | if (asRootData && ob) { |
| 806 | ob.vmCount++; |
| 807 | } |
| 808 | return ob |
| 809 | } |
| 810 | |
| 811 | /** |
| 812 | * Define a reactive property on an Object. |
no test coverage detected