i 请教一下看过 vue 源码的同学们

2018-05-06 21:49:18 +08:00
 ghostgril

这个 vue 源码里 init.js resolveConstructorOptions(vm.constructor) 为何要在 constructor 上赋值 super

1211 次点击
所在节点    前端开发
1 条回复
noe132
2018-05-06 22:01:03 +08:00
没仔细看 vue 源码,不过可以大概猜一猜
因为之前的单纯 prototype 实现的子类,实际上只继承了 prototype 的方法和属性,不像 es class,父类构造函数是没有继承的。
那么想实现一个可以继承父类构造函数的子类,通常的做法就是将父类的构造函数设置为子类的某个属性,在子类的构造函数运行时,先用父类构造函数修饰实例对象。

vue 这个看起来是只继承了父类的构造函数参数,子类创建的时候把父类的构造函数参数 merge 到子类参数上。

类似的可以参考 node 中的 util.inherits 方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX