ECMAScript 6 类和类的继承

本文详细探讨了ES6中的类和继承,包括类的声明、constructor函数、属性和方法、取值函数(getter)和存值函数(setter),以及类的继承。讲解了如何使用class关键字创建类,并对比了ES5与ES6中类的实现方式。此外,还提到了静态属性、私有方法、getter和setter的用法,以及子类继承父类的super关键字的使用。
摘要由CSDN通过智能技术生成

类和类的继承

一、类的声明

JS中到处都是对象,它是一门基于对象的语言,JS代码的执行都依托于对象,利用对象产生各种具备关联性的上下文环境,JS代码才能正常运行。

但是我们都知道在ES5中,没有class,我们只是利用函数、new关键词、原型等方式实现类的概念和基本使用,但是随着技术的发展和编程语言的互相靠拢,只使用构造函数或者工厂模式去实现类的封装调用很不现实,代码不明确,容易让学习者和开发者产生误会。

所以 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

ES5声明类

function Point(x, y) {
   
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
   
  return '(' + this.x + ', ' + this.y + ')';
};

let p = new Point(3, 4);

ES6声明类

class Point {
   
    // 构造函数
    constructor(x, y) {
   
        this.x = x;
        this.y = y;
    }
    // 原型函数
    toString = function () {
   
        return '(' + this.x + ', ' + this.y + ')';
    };
}

上面代码定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。也就是说,ES5 的构造函数Point,对应 ES6 的Point类的构造方法。

Point类除了构造方法,还定义了一个toString方法。注意,定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。

ES6的类,完全可以看做构造函数的另一个写法:

class Point {
   
  // ...
}

typeof Point // "function"
Point === Point.prototype
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锋利的二丫

如果对您有帮助,请博主喝杯奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值