关于ES6 Class语法相关总结

其实关于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

原文地址:https://www.cnblogs.com/jone-chen/p/8892141.html

时间: 2024-10-03 00:58:18

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

ES6常用语法

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel. Babel Babel是一个广泛使用的ES6转码器,可以将

总结常见的ES6新语法特性

总结常见的ES6新语法特性 ES6给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数(=>).class等等.用一句话来说就是: ES6给我们提供了许多的新语法和代码特性来提高javascript的体验 不过遗憾的是,现在还没有浏览器能够很好的支持es6语法,点这里查看浏览器支持情况,所以我们在开发中还需要用babel进行转换为CommonJS这种模块化标准的语法. 因为下面我会讲到一些es6新特性的例子,如果想要

ES6新语法之---对象字面量扩展、模板字符串(5)

这节课学习ES6中对象字面量扩展和新增模板字符串 第一部分:对象字面量扩展 1.简洁写法 ES6对于对象字面量属性提供了简写方式. 1.1:属性简写 //传统写法 var x = 2, y = 3, o = { x: x, y: y }; //ES6简洁写法 var x = 2, y = 3, o = { x, //属性名和赋值变量名相同时,可简写 y }; 1.2:方法简写 //传统写法 var o = { x: function() { //... }, y: function() { //

ECMAScript简介以及es6新增语法

ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的规格,后者是前者的实现.但通常两者是可互换的.) ESMAScript的历史 1996年11月,Netscape公司将Js提交给国际化标准组织ECMA,当初该语言能够成为国际化标准. 1997年,ECMAScript 1.0版本推出.(在这年,ECMA发布262号标准文件(ECMA-262)的第一版

ES6最新语法

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel. Babel Babel是一个广泛使用的ES6转码器,可以将

ES6 新增语法

为什么是 ES6 每一次标准的诞生都意味着语言的完善,功能的加强, JavaScript 语言本身也有一些令人不满意的地方 变量提升特性增加了程序运行时的不可预测性 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码 ES6 新增语法 let ES6 中新增的用于声明变量的关键字 let 声明的变量只在所处的块级有效 防止循环变量变成全局变量 不存在变量提升 暂时性死区 和 let 所在的块级区域进行绑定 注意:使用 let 关键字声明的变量才具有块级作用域,使用 var 声明的变量不具

es6新语法

SegmentFault 头条 问答 专栏 讲堂 职位 活动 搜索 消息 注册 · 登录 home javascript php python java mysql ios android node.js html5 linux c++ css3 git golang ruby vim docker mongodb 文 es6语法快速上手 es6 javascript 奋进的小莫 2016年06月17日发布 推荐 2 推荐 收藏 44 收藏,6.5k 浏览 随着google和firfox以及no

总结常见的ES6新语法特性。

前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数(=>).class等等.用一句话来说就是: ES6给我们提供了许多的新语法和代码特性来提高javascript的体验 不过遗憾的是,现在还没有浏览器能够很好的支持es6语法,点这里查看浏览器支持情况,所以我们在开发中还需要用babel进行转换为CommonJS这种模块化标准的语法. 因为下面我会讲到一

在es6的语法下 对象的构造和继承实例

es6新增了class 类 可以更方便的创建和继承对象的属性和方法 但是这个class 只是一个语法糖 让创建对象的形式更加简便和直观下面是对该方法的简单实践 //es6 实例化对象和继承 class 新语法 class person{ constructor(name,age){ this.name=name this.age=age } } const person1=new person('bob',25) console.log(person1.age)//25 //extends 继承