vm.$options 问题

来源:3-3 patch(上)

六一888

2019-12-30

export function initInternalComponent (vm: Component, options: InternalComponentOptions) {
  const opts = vm.$options = Object.create(vm.constructor.options)
  console.log(vm)
  // doing this because it's faster than dynamic enumeration.
  ...
}

这段代码中,为什么要使用 Object.create 方法?直接赋值不可以么?为什么要赋值给 vm.$options 的原型对象 Object。

写回答

1回答

ustbhuangyi

2019-12-31

因为需要创建一个新的对象引用,直接赋值会导致你对 vm.$options 的操作可能会影响 vm.constructor.options 原对象。

0
1
六一888
非常感谢!
2019-12-31
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4989 学习 · 1038 问题

查看课程