level 5
浅夏贤爱占室萝cw
楼主
Vue.extend:使用Vue构造器创建一个子类,参数为组件选项。 内部创建一个 Sub 函数并继承父类。
增加缓存策略使用父类 id 作为缓存的 key,将子类缓存在 cachedCtors 中。
创建子类并返回,此时还没有继承 Vue 的能力。
新增原型继承的逻辑(Sub.prototype = Object.create(Super.prototype)),并将父类的 options 选项继承到子类中(mergeOptions)
如果选项中存在 props 属性,则初始化initProps(Sub),作用是将 key 代理到 _props 中。此时 vm.name 访问的是 Sub.prototype._props.name
如果有 computed,也进行初始化(initComputed(sub))
将父类中存在的属性依此复制到子类中,包括 extend,mixin,use,component,directive 和 filter。同时子类上新增了 superOptions,extendOptions 和 sealedOptions 属性。
Vue.nextTick:在下次DOM更新循环结束后执行延迟回调,可用来获取更新后的DOM。
Vue.set:同vm.$set,设置对象属性,如果对象是响应式的,则创建后也是响应式的。用于避开 Vue 不能检测属性被添加的限制。
Vue.delete:删除对象属性。如果对象是响应式的,则会触发更新试图。用于避开Vue不能检测到属性被删除的限制。
Vue.directive:注册或获取全局指令。
2025年12月14日 01点12分
1
增加缓存策略使用父类 id 作为缓存的 key,将子类缓存在 cachedCtors 中。
创建子类并返回,此时还没有继承 Vue 的能力。
新增原型继承的逻辑(Sub.prototype = Object.create(Super.prototype)),并将父类的 options 选项继承到子类中(mergeOptions)
如果选项中存在 props 属性,则初始化initProps(Sub),作用是将 key 代理到 _props 中。此时 vm.name 访问的是 Sub.prototype._props.name
如果有 computed,也进行初始化(initComputed(sub))
将父类中存在的属性依此复制到子类中,包括 extend,mixin,use,component,directive 和 filter。同时子类上新增了 superOptions,extendOptions 和 sealedOptions 属性。
Vue.nextTick:在下次DOM更新循环结束后执行延迟回调,可用来获取更新后的DOM。
Vue.set:同vm.$set,设置对象属性,如果对象是响应式的,则创建后也是响应式的。用于避开 Vue 不能检测属性被添加的限制。
Vue.delete:删除对象属性。如果对象是响应式的,则会触发更新试图。用于避开Vue不能检测到属性被删除的限制。
Vue.directive:注册或获取全局指令。