es6(五):class关键字(extends,super,static)

ES5中,生成对象通过构造函数

 1 function A(name,age){
 2       this.name=name;
 3       this.age=age
 4     }
 5     // 在A的prototype属性上定义一个test方法,即A生成的实例化对象的原型对象上的方法
 6     A.prototype.test=function(){
 7       return this.name+' '+this.age
 8     }
 9 
10     var a1=new A('apple',100)
11     console.log(a1.test())//apple 100

es6中,引入了class关键字,上面代码等价于下面:

 1 class B{
 2       constructor(name,age){
 3         this.name=name
 4         this.age=age
 5       }
 6       test(){
 7         return this.name+' '+this.age
 8       }
 9     }
10     var b1=new B('apple',100)
11     console.log(b1.test())//apple 100

需要注意的一点是:类和模块中默认使用的就是严格模式

class中的静态方法:static

 1 class C{
 2       //没有写上constructor,默认会生成一个空的构造函数
 3       static foo(){//注意:class里面函数不用添加function;
 4       // 函数前面添加一个static关键字,表明这是一个静态方法,不会被实例继承,只能通过类来调用
 5         console.log(100)
 6       }
 7     }
 8     let c1=new C()
 9     // c1.foo()报错
10     C.foo()//100

继承:class可以通过extends关键字继承,对比es5修改原型链简单直观方便许多

注意:子类中如果写了构造函数contructor,那么一定要在里面使用super方法,同时只有使用了super方法才能使用this!当然如果没有构造函数,那么默认会生成一个构造函数

 1 class D{
 2       constructor(age,email){
 3         this.age=age
 4         this.email=email
 5       }
 6       static test(){
 7         console.log(10)
 8       }
 9     }
10     class E extends D{
11       constructor(age,email,weight){
12         super(age+'E',email+'E')//这里的super指向的是父类
13         this.weight=weight
14       }
15     }
16     let e1=new E(10,'100@qq.com',100)
17     console.log(e1)//E {age: "10E", email: "100@qq.comE", weight: 100}
18     E.test()//10,说明父类的静态方法可以被子类继承;但同理实例对象无法访问
19     // e1.test()//报错

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

为什么算法容易忘记之快速排序

本文用来帮助大家理解记忆快速排序,方法和上篇文章一样,着重理解算法基本思想及其代码中的循环控制变量的意义。 基本思想 快速排序属于拿着元素找位置的算法。思路非常...

3444
来自专栏小白的技术客栈

Python内置数据结构之字符串

字符串 今天跟大家来说一说Python中的字符串数据结构。 ? 上文回顾 让我们回顾一下可变类型及不可变类型: 不可变数据类型:str、int、tuple ...

4128
来自专栏天天

prototype初识

1002
来自专栏编程

PYTHON数据类型

Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictiona...

2186
来自专栏五毛程序员

C++知识点整理——持续更新

2164
来自专栏散尽浮华

python基础随笔

一: 作用域 对于变量的作用域,只要内存中存在,该变量就可以使用。 二:三元运算 name = 值1 if 条件 else 值2 如果条件为真:result =...

2219
来自专栏北京马哥教育

Python变量类型全书

? 糖豆贴心提醒,本文阅读时间6分钟 一、Python 变量类型简介 1、Python中变量的特点: 我们知道,在Python中,变量有如下的特点: (1)...

2607
来自专栏mwangblog

python元组(Turple)

1775
来自专栏静默虚空的博客

[Java 基础]基础语法

Java代码基本规范 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 类名:对于所有的类来说,类名的首字母应该大写。如果类...

2098
来自专栏云霄雨霁

Java--数组

1844

扫码关注云+社区

领取腾讯云代金券