关于ES6,其实网上已经有很多的资料可供查询,教程可参考阮一峰大神的ES6入门,本文只是对Class这一语法做一个总结:

一、Class基本语法

constructor方法

constructor是类的默认构造方法,new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

this的指向

类的方法内部如果含有this,它默认指向类的实例。注意,在static静态方法中,this会指向当前类,不是实例;

静态方法和实例方法

静态方法是在方法名前面加static关键字,静态方法不会被实例继承,只能通过类来调用。如在实例上调用,则会抛出一个错误;注意,如果静态方法包含this关键字,这个this指的是类,而不是实例。

实例方法可通过new关键字直接调用,同ES5一样;

静态属性和实例属性

静态属性指的是 Class 本身的属性,即Class.propName,而不是定义在实例对象(this)上的属性。ES6,定义类的属性,不能定义在类里面,需要在外面定义,见代码:

Class Person{
}
Person.school = "Beijing University";

ES7中,可定义在类的内部,前面加static关键字即可;

类的实例属性可以用等式,写入类的定义之中。在实例上,可以直接调用这个属性;

二、Class继承

Class 可以通过extends关键字实现继承,见代码:

class A{
} class B extends A{
}

子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。

父类的静态方法,也会被子类继承。

最后,见下面代码:

class Person {
constructor(name, age) {
this.name = name;
this.age = age;
} static log(text) {
console.log(`Helow ${text},I'm come from ${this.school}`)
}
toString() {
return (`My name is ${this.name},I'm ${this.age}`)
}
}
Person.school = "Beijing University"; Person.log("Jack");
// 创建一个实例
var person = new Person("Jason", 30); // ==> Helow Jack,I'm come from Beijing University
console.log(person.toString()) // ==> My name is Jason,I'm 30
console.log(person instanceof Person); // ==> true
console.log(Person instanceof Object); // ==> true
console.log(person.age); // ==> 30
console.log(person.hasOwnProperty('age')); // ==> true
console.log(person.hasOwnProperty('log')); // ==> false
console.log(Person.hasOwnProperty('log')); // ==> true class People extends Person {
constructor(name, age, sex) {
super(name, age);
this.sex = sex;
this.string = super.toString();
}
speak() {
// console.log(super.toString(), this.total)
console.log(`${this.string}, My sex is a ${this.sex}`)
}
} const people = new People('Tome', 30, 'Man');
people.speak(); // ==> My name is Tome,I'm 30, My sex is a Man
People.log("Lucy"); // ==> Helow Lucy,I'm come from Beijing University
console.log(people.hasOwnProperty('total')); // ==> false

关于ES6 Class语法相关总结的更多相关文章

  1. ES6常用语法

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  2. ES6继承语法

    <!--http://www.56.com/u85/v_MTMyNjk1OTc4.html--> <!DOCTYPE html> <html> <head&g ...

  3. ECMAScript简介以及es6新增语法

    ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ...

  4. ES6新语法

    ES6新语法概览 简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委 ...

  5. ES6新语法的介绍

    对于ES6新语法,阮一峰有一篇文章介绍的挺详细 http://es6.ruanyifeng.com/#docs/destructuring

  6. ES6最新语法

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  7. ES6新语法之let关键字;有别于传统关键字var的使用

    ES6新语法于2015年发布:而我这个前端小白在17年才接触到.惭愧惭愧!!不过到目前为止,似乎只有FireFox和Chrome对ES6的支持相对良好.不过既然人家ES6已经出来了,还是要跟上技术的潮 ...

  8. MySQL语法相关其一

    一篇基础语法相关的笔记 // 参考资料: MySQL入门很简单 黄缙华等编著 清华大学出版社 北京 建议进入官网下载对应版本后安装:https://dev.mysql.com/downloads/my ...

  9. 让 Node.js 支持 ES6 的语法

    为了让 Node.js 支持 ES6 的语法, 需要使用 Babel. 安装 es-checker 在使用 Babel 之前 , 我们先检测一下当前 node 对 es6 的支持情况. 在命令行下执行 ...

随机推荐

  1. SDWebImage缓存图片的机制

    SDWebImage是一个很厉害的图片缓存的框架.既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图 ...

  2. DB2 数据库常用操作【持续更新】

    好久没写博客了. 上次还是两个月前. 1. 连接数据库 db2 connect to dbName user userName using password 2. 查看表结构 db2 "de ...

  3. Tomcat 启动流程

  4. 每日一问(如何在List中加入、设置、获取和删除其中的元素?)

    作为集合接口的一部分,对List接口所做的操作,最常见的就是增删查改了.这里总结下JAVA 中List接口及实现该接口的类实现这些操作的方法. 一.增加新的元素的方法 在Collection接口中定义 ...

  5. Fair CodeForces - 987D(巧妙bfs)

    题意: 有n个城市 m条边,每条边的权值为1,每个城市生产一种商品(可以相同,一共k种),求出分别从每个城市出发获得s种商品时所走过路的最小权值 解析: 我们倒过来想,不用城市找商品,而是商品找城市, ...

  6. BZOJ3836 [Poi2014]Tourism 【树形dp +状压dp】

    题目链接 BZOJ3836 题解 显然这是个\(NP\)完全问题,此题的解决全仗任意两点间不存在节点数超过10的简单路径的性质 这意味着什么呢? \(dfs\)树深度不超过\(10\) \(10\)很 ...

  7. 洛谷P1592 互质

    题目描述 输入两个正整数n和k,求与n互质的第k个正整数. 输入输出格式 输入格式: 仅一行,为两个正整数n(≤10^6)和k(≤10^8). 输出格式: 一个正整数,表示与n互质的第k个正整数. 由 ...

  8. response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别

    转发方式:request.getRequestDispatcher().forward(); 重定向方式:response.sendRedirect();  下面是HttpServletRespons ...

  9. as, idea 出现 Gradle's dependency cache may be corrupt 错误分析

    问题: Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs af ...

  10. 面试自我介绍之English

    Version 1 Hello, everyone. I am so glad to stand here. First of all, I will introduce myself. My nam ...