如何继承Date对象?由一道题彻底弄懂JS继承。
前言
见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正。
———-长文+多图预警,需要花费一定时间———-
故事是从一次实际需求中开始的。。。
某天,某人向我寻求了一次帮助,要协助写一个日期工具类,要求:
-
此类继承自
Date
,拥有Date的所有属性和对象 -
此类可以自由拓展方法
形象点描述,就是要求可以这样:
// 假设最终的类是 MyDate,有一个getTest拓展方法
let date = new MyDate();
// 调用Date的方法,输出GMT绝对毫秒数
console.log(date.getTime());
// 调用拓展的方法,随便输出什么,譬如helloworld!
console.log(date.getTest());
于是,随手用JS中经典的组合寄生法写了一个继承,然后,刚准备完美收工,一运行,却出现了以下的情景:
但是的心情是这样的: