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