Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ES6 Class(类)

ES6 Class(类)

作者头像
Leophen
发布于 2019-08-23 02:31:51
发布于 2019-08-23 02:31:51
44500
代码可运行
举报
文章被收录于专栏:Web前端开发Web前端开发
运行总次数:0
代码可运行

一、ES6 类的定义

ES5 构造函数的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Point(x, y) {
    this.x = x;
    this.y = y;
}

ES6 引入了 Class(类),通过class关键字,可以定义类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
}

这里,ES6 的 Point 类的构造方法对应前面 ES5 的构造函数 Point,代码中的 constructor 是构造方法。

关于 constructor constructor 是类的默认方法,通过 new 命令生成对象实例时,自动调用该方法。 一个类必须有 constructor 方法,如果没有显式定义,一个空的 constructor 方法会被默认添加: class Point { } // 等同于 class Point { constructor() {} }

二、ES6 类的实例

生成类的实例与 ES5 一样,也是用 new 命令。

但构造函数的实例不用 new 也可以执行,而类必须用 new,否则会报错:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Point {
  // ...
}

// 报错
var point = Point(2, 3);

// 正确
var point = new Point(2, 3);

三、ES6 类的继承

 1、extends 关键字实现继承

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent{
  constructor(lastName='Liu'){
    this.lastName=lastName;
  }
}
class Child extends Parent{
}
console.log(new Child());

// 输出结果

2、super() 方法继承传递参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent{
  constructor(lastName='Liu'){
    this.lastName=lastName;
  }
}
class Child extends Parent{
  constructor(lastName){
    super(lastName);
  }
}
console.log(new Child('Chen'));

// 输出结果

四、getter 和 setter

与 ES5 一样,在“类”的内部可以使用 get 和 set 关键字,对某个属性设置取值函数和存值函数,拦截该属性的存取行为

1、getter(取值函数)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent{
  constructor(name='Winnie'){
    this.name=name;
  }
  get longName(){
    return 'Liu'+this.name;
  }
}
let getterName=new Parent();
console.log(getterName.longName);  // LiuWinnie

2、setter(存值函数)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent{
  constructor(name='Winnie'){
    this.name=name;
  }
  get longName(){
    return 'Liu'+this.name;
  }
  set longName(value){
    this.name=value;
  }
}
let setterName=new Parent();
setterName.longName='Honey';
console.log(setterName.longName);    // LiuHoney

五、静态方法

类相当于实例的原型,所有在类中定义的方法,都会被实例继承。

但如果在一个方法前加上 static 关键字,则该方法不会被实例继承,而是直接通过类来调用,这种方法称为静态方法。

1、static 关键字的使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent{
  static tell(){
    console.log('hello');
  }
  tell(){
    console.log('world');
  }
}
Parent.tell();    // hello

以上代码还可以看出静态方法可以与非静态方法重名

2、静态属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parent {
}

Parent.lastName = 'Liu';
console.log(Parent.lastName);  // Liu

上面代码为 Parent 类定义了一个静态属性 lastName

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
es6中class的一些基础知识和es5语法的对比
在es6中,出现了类(class)的概念,这极大的优化了我们的开发效率,今天我们就来说说js中的class。
小明爱学习
2020/07/21
6030
ES6前端就业课第三课之class
编程语言,都有关于类的定义和使用,java,C#,C++。使用class的关键字,js之前的版本,没有用。保留字,ES6启用了该关键字。
张哥编程
2024/12/19
660
前端开发,必知ES5、ES6的7种继承
众所周知,在ES6之前,前端是不存在类的语法糖,所以不能像其他语言一样用extends关键字就搞定继承关系,需要一些额外的方法来实现继承。下面就介绍一些常用的方法,红宝书已经概括的十分全面了,所以本文基本就是对红宝书继承篇章的笔记和梳理。
青梅煮码
2023/03/13
2590
一万字ES6的class类,再学不懂,请来找我(语法篇)
上面这种写法跟传统的面向对象语言(比如 C++ 和 Java)差异很大,很容易让新学习这门语言的程序员感到困惑。
coder_koala
2021/11/12
3430
ES6新特性class类
Es6新增的类其实就是基于原型机制的语法糖,类的语法可以让开发者更好的定义向后兼容的类,不仅可以继承内置类型,还可以继承自定义类型。
大熊G
2022/11/14
3870
ES6新特性class类
JS es6的Class类详解
JavaScript 语言中,生成实例对象的传统方法是通过构造函数和原型的组合模式.ES6 提供了更接近传统语言(java)的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。
全栈程序员站长
2022/06/28
4.7K0
JS es6的Class类详解
详解ES6中的class
class是一个语法糖,其底层还是通过 构造函数 去创建的。所以它的绝大部分功能,ES5 都可以做到。新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
木子星兮
2020/07/16
5220
JavaScript ES5 与 ES6 中的类(Class)详解
在 JavaScript 中,ES5 通过 **构造函数(Constructor)** 和 **原型链(Prototype Chain)** 实现面向对象编程(OOP),而 ES6 引入了 `class` 关键字,提供更清晰、更接近传统面向对象语言的语法。以下是两者的对比与详细说明:
jack.yang
2025/04/05
1380
JavaScript ES5 与 ES6 中的类(Class)详解
小结ES6基本知识点(三):类与继承
ES6初学者,通过阅读本文可对ES6知识点有个大体的概念,强烈建议阅读阮一峰大大的ES6入门。
前端林子
2019/03/09
2.3K1
小结ES6基本知识点(三):类与继承
ES6新特性实现面向对象编程,上万字详解用class语法定义类
首先,写这篇文章是因为我答应了一个粉丝要写一篇ES6的 class 相关知识的要求,哈哈我是不是特别宠粉呀~其实同时也是帮助我自己复习一下知识点啦
@零一
2021/01/29
8751
玩转ES6(四)Set、Map、Class类和decorator 装饰器
在看Class之前建议看一下js的面向对象 https://juejin.im/post/5b8a8724f265da435450c591
前端迷
2019/12/03
8770
ES6中的Class回顾总结二:继承
上例可以看到,子类Student的constructor方法和showScore方法中,都用到了super关键字,它表示的是父类的构造函数,用来新建父类的this对象,注意,super虽然代表了父类的构造函数,但是返回的是子类的实例,即super内部的this指的是子类,因此super()在这里相当于A.prototype.constructor.call(this)。
前端_AWhile
2019/08/29
4020
【JS 构造|原型|原型链|继承(圣杯模式)|ES6类语法】下篇
❗️ ❗️ ❗️本篇系将带来JavaScript中的构造——原型——原型链——继承——ES6类语法系列知识完整讲解。 ❗️ ❗️ ❗️ ❕上篇涉及:构造——原型——原型链 ❕下篇涉及:继承——ES6类语法
好吃懒洋洋
2022/11/21
8040
【JS 构造|原型|原型链|继承(圣杯模式)|ES6类语法】下篇
ES6之class基本语法
类这个概念对于做后台的应该是非常熟悉,JavaScript的类对于其他面向对象的语言差异很大,只能使用构造函数生成实例对象。为了接近传统语言,ES6引入了class类这个概念,通过class关键字定义类。
wade
2020/04/23
2870
ES6-标准入门·Class 类
直至 ES6,JavaScript 终于有了“类”的概念,它简化了之前直接操作原型的语法,也是我最喜欢的新特性之一,但此类非彼类,它不同于熟知的如 Java 中的类,它本质上只是一颗语法糖。
数媒派
2022/12/01
2940
ES6之class
1. set and get关键字。 1. 只读属性。 2. 私有属性访问限制。 2. 静态方法:static关键字。 > Tip:class关键字目前仅支持static声明静态方法,静态属性仍需要类.xx实现。 3. 继承:extends关键字。 > 其实extends关键字相当于ES5原型继承和构造继承的结合体。内部实现原理: 1. 子类constructor中call调用父类-构造继承。 2. 子类.prototype = new 父类-原型继承。 3. 继承父类实例方法-可以通过子类.xx调用父类构造方法。 4. super():ES6的继承extends必须要在父类的constructor中显示的调用super(params),params是传递给父类构造函数的参数。 5. 静态方法和属性牢记是不可被继承的。 复制代码
19组清风
2021/11/15
3400
ES6--Class、Module及常用特性
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
5930
ECMAScript 6教程 (三) Class和Module(类和模块)
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文连接,博客地址为 http://www.cnblogs.com/jasonnode/ 。该系列课程是汇智网 整理编写的,课程地址为 http://www.hubwiz.com/course/5594e91ac086935f4a6fb8ef/
笔阁
2018/09/04
4950
ES6——类(Class)
ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。 ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的class改写,就是下面这样。
羊羽shine
2019/07/31
1.1K0
ES6—class类详细教程(下)
上一期出了ES6中Class类用法详解的(上)半部分,以下是(下)半部分,需要复习上半部分的小伙伴可以点击文章末尾的“阅读原文”或者点击文中的超链接。
用户9999906
2022/09/26
7700
相关推荐
es6中class的一些基础知识和es5语法的对比
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验