深入解析 Class 的继承

本文深入探讨了ES6中Class的继承问题,特别是如何正确继承原生构造函数如Date。文章分析了原生构造函数的特殊性,即this无法绑定,并对比了ES5与ES6继承的差异。通过实例展示了如何在ES6中继承Date对象,强调了正确实现继承的关键在于理解原型链的工作原理。
摘要由CSDN通过智能技术生成

深入解析 ES6 的继承

学习,就是不断推翻原有知识体系,跳出去建构更庞大的体系的一个过程。期间越是觉得迷惑不解,越是说明你掌握了新的东西。

今天看到一篇文章,博主遇到了如何继承 Date 对象的问题。博主很优秀,讲了好几个如何实现例子,但是文章看的我很迷糊。我觉得重点不是如何去实现,而是去明白产生问题的根源,所以有了这篇博客,从我认为可以理解的角度讲一讲。

之前写了一篇博客讲了如何用 es5 实现 Class 的继承,有兴趣可以看看 ES6 Class 的原生写法

一、问题产生背景

首先,我们要知道在 ES5 中,原生构造函数是无法继承的。

ECMAScript 的原生构造函数大致有下面这些:

Boolean()
Number()
String()
Array()
Date()
Function()
RegExp()
Error()
Object()

然而 ES6 却允许使用 extends 继承原生构造函数定义子类。

二、问题的根源

ES5 与 ES6 在继承上是有区别,而又通过原生构造函数的某个特殊性质,导致他们显现不同的状态。

所以我们要先弄清楚原生构造函数的特殊性,再看继承的不同表现

(1)原生构造函数特殊性: this 无法绑定

原生构造函数无法强制绑定 this

例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值