(vm)
| 2719 | } |
| 2720 | |
| 2721 | function initData (vm) { |
| 2722 | var data = vm.$options.data; |
| 2723 | data = vm._data = typeof data === 'function' |
| 2724 | ? getData(data, vm) |
| 2725 | : data || {}; |
| 2726 | if (!isPlainObject(data)) { |
| 2727 | data = {}; |
| 2728 | "development" !== 'production' && warn( |
| 2729 | 'data functions should return an object:\n' + |
| 2730 | 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', |
| 2731 | vm |
| 2732 | ); |
| 2733 | } |
| 2734 | // proxy data on instance |
| 2735 | var keys = Object.keys(data); |
| 2736 | var props = vm.$options.props; |
| 2737 | var i = keys.length; |
| 2738 | while (i--) { |
| 2739 | if (props && hasOwn(props, keys[i])) { |
| 2740 | "development" !== 'production' && warn( |
| 2741 | "The data property \"" + (keys[i]) + "\" is already declared as a prop. " + |
| 2742 | "Use prop default value instead.", |
| 2743 | vm |
| 2744 | ); |
| 2745 | } else if (!isReserved(keys[i])) { |
| 2746 | proxy(vm, "_data", keys[i]); |
| 2747 | } |
| 2748 | } |
| 2749 | // observe data |
| 2750 | observe(data, true /* asRootData */); |
| 2751 | } |
| 2752 | |
| 2753 | function getData (data, vm) { |
| 2754 | try { |
no test coverage detected