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