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