老师您好, 在生成vue.extend的过程中,执行的一个方法initComputed, 看方法的作用是将options里面的computed的属性代理到组件的实例上,但是我发现在_init的过程中也触发了initState里面的initComputed方法执行,两个方法都将computed代理到了实例上,后来通过注释了vue.extend 里面的initComputed 发现并不影响代码的正常运行并且功能也没问题,所以想问问这段代码是还有其他作用么? 版本的2.6.11的
function initState (vm) {
vm._watchers = [];
var opts = vm.$options;
if (opts.props) { initProps(vm, opts.props); }
if (opts.methods) { initMethods(vm, opts.methods); }
if (opts.data) {
initData(vm);
} else {
observe(vm._data = {}, true /* asRootData */);
}
if (opts.computed) {
// 这是Vue里面的 initComputed
initComputed(vm, opts.computed);
}
if (opts.watch && opts.watch !== nativeWatch) {
initWatch(vm, opts.watch);
}
}
if (Sub.options.computed) {
initComputed$1(Sub);
}
//这是vue.extend里面的initComputed
function initComputed$1 (Comp) {
var computed = Comp.options.computed;
for (var key in computed) {
defineComputed(Comp.prototype, key, computed[key]);
}
}