xml地图|网站地图|网站标签 [设为首页] [加入收藏]
transform坐标变换,从本质认识JavaScript的原型继承
分类:web前端

如何继承 Date 对象?由一道题彻底弄懂 JS 继承

2018/01/25 · JavaScript · Date, 继承

原文出处: 撒网要见鱼   

理解SVG transform坐标变换

2015/10/11 · HTML5 · SVG

原文出处: 张鑫旭   

从本质认识JavaScript的原型继承和类继承

2016/04/06 · JavaScript · 1 评论 · 继承

原文出处: 十年踪迹(@十年踪迹)   

JavaScript发展到今天,和其他语言不一样的一个特点是,有各种各样的“继承方式”,或者稍微准确一点的说法,叫做有各种各样的基于prototype的模拟类继承实现方式。

在ES6之前,JavaScript没有类继承的概念,因此使用者为了代码复用的目的,只能参考其他语言的“继承”,然后用prototype来模拟出对应的实现,于是有了各种继承方式,比如《JavaScript高级程序设计》上说的 原型链,借用构造函数,组合继承,原型式继承,寄生式继承,寄生组合式继承 等等

那么多继承方式,让第一次接触这一块的小伙伴们内心有点崩溃。然而,之所以有那么多继承方式,其实还是因为“模拟”二字,因为我们在说继承的时候不是在研究prototype本身,而是在用prototype和JS特性来模拟别的语言的类继承。

我们现在抛开这些种类繁多的继承方式,来看一下prototype的本质和我们为什么要模拟类继承。

前言

见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正。

———-长文+多图预警,需要花费一定时间———-

故事是从一次实际需求中开始的。。。

某天,某人向我寻求了一次帮助,要协助写一个日期工具类,要求:

  • 此类继承自Date,拥有Date的所有属性和对象
  • 此类可以自由拓展方法

形象点描述,就是要求可以这样:

// 假设最终的类是 MyDate,有一个getTest拓展方法 let date = new MyDate(); // 调用Date的方法,输出GMT绝对毫秒数 console.log(date.getTime()); // 调用拓展的方法,随便输出什么,譬如helloworld! console.log(date.getTest());

1
2
3
4
5
6
7
// 假设最终的类是 MyDate,有一个getTest拓展方法
let date = new MyDate();
 
// 调用Date的方法,输出GMT绝对毫秒数
console.log(date.getTime());
// 调用拓展的方法,随便输出什么,譬如helloworld!
console.log(date.getTest());

于是,随手用JS中经典的组合寄生法写了一个继承,然后,刚准备完美收工,一运行,却出现了以下的情景:

图片 1

但是的心情是这样的:

本文由澳门新葡亰手机版发布于web前端,转载请注明出处:transform坐标变换,从本质认识JavaScript的原型继承

上一篇:入门教程,Canvas前端游戏开发 下一篇:仙剑奇侠传的web移植版,Web开荒者需知的十五个
猜你喜欢
热门排行
精彩图文