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