功能:
·接收配置信息
·将data的属性转换成Getter、Setter,并注入到Vue实例中。
*监听头中所有属性的变化,设置成响应式数据
*调用解析功能(解析模板内的插值表达式、指令等)

class Vue {
constructor (options) {
// 1 存储属性
this.$options = options || {}
this.$data = options.data || {}
// 判断 el 值的类型,并进行相应处理
const { el } = options
this.$el = typeof el === ‘string’ ? document.querySelector(el) : el
// 2 将 data 属性注入到 Vue 实例中
_proxyData(this, this.$data)
// *3. 创建 Observer 实例监视 data 的属性变化
new Observer(this.$data)
// *4. 调用 Compiler
new Compiler(this)
}
}
// 将 data 的属性注入到 Vue 实例
function_proxyData (target, data) {
Object.keys(data).forEach(key=> {
Object.defineProperty(target, key, {
enumerable:true,
configurable:true,
get () {
returndata[key]
},
set (newValue) {
data[key] = newValue
}
})
})
}