美文网首页
es6语法Class关键字和继承

es6语法Class关键字和继承

作者: 2019Say10 | 来源:发表于2019-08-24 15:33 被阅读0次

1.class

class的含义就是表示一类事物,把拥有相同一些属性的事物定义为一个类,其中使用构造来获取保存传入的参数,但在es5中似乎由构造函数就包含了类和构造.这样定义语义并不明确,而class关键字的引入就更加规范,更容易理解。
es6中定义一个class类

class roundness{
    constructor(length){
        this.length=length
    }
    area(){
        return length*length
    }
}

class Rectangle{
  //构造方法
    constructor(recWith,recHeight){
        this.recWith=recWith
        this.recHeight=recHeight
    }
  //方法
    area(){
        return this.recWith*recHeight
    }
    perimeter(){
        retrun (recWith+recHeight)*2
    }
}

定义了一个User类,在构造方法中传入参数.其中的this指向为当前类.在使用类时.必须通过new关键字实例化一个对象.在类内部没有构造方法时,会默认的调用一个无参数的构造方法.

2.继承

面向对象的一个特征就是继承,在没使用exends关键字时,js的继承使用的是改变子类的原型对象完成继承代码如下:

function User(name,age){
    this.name=name
    this.age=age
}
User.prototype.show=function(){
    console.log("这是一个用户")
}
function VipUser(type){
    this.type=type
}
VipUser.prototype=new User("joker",'age')
VipUser.prototype.constructor=VipUser
let vipUser=new VipUser("ViP")

而使用extends就简单多了

class User {
    constructor(name,age){
        this.name=name
        this.age=age
    }
    show(){
        console.log("这是一个普通用户")
    }
}
class VipUser extends User{
    constructor(name,age,type){
        super(name,age)//调用父类的构造
        this.type=type
    }
    show(){
        "这是一个vip用户"
    }
}
let vipUser=new VipUser("joke","20","vip")

//其中super必须写,表示从父类的构造中获取数据
如果子类没有构造方法则会调用一个默认的构造方法

class VipUser extends User {
}

// 等同于
class VipUser extends User {
  constructor(...args) {
    super(...args);
  }
}

其中super表示父级对象,可以通过super重写父级方法

class VipUser extends User{
    constructor(name,age,type){
        super(name,age)//调用父类的构造
        super.show=function(){
            console.log("这是一个vip用户")
        }
    }
}

相关文章

  • 浅谈ES6 类的原型

    ES6新增了类的概念 , 即关键字 class , 并且也实现了继承 extends 等这样的语法糖, 那么相比于...

  • [JavaScript] class

    ES6中的class基于原型继承创建类。 (1)class只是原型继承的语法糖 相当于: 注: class定义中...

  • es6语法Class关键字和继承

    1.class class的含义就是表示一类事物,把拥有相同一些属性的事物定义为一个类,其中使用构造来获取保存传入...

  • ES6

    ES6是一个语言标准,不是一个框架。 ES6中的class与继承 class是创建类对象与实现类继承的语法糖,旨在...

  • JavaScript ES6中的“Super”和“Extends

    ES6通过class语法及其附加功能使JavaScript看起来简单得多。今天,我们将把class语法功能与继承概...

  • ECMAScript 6 篇2

    13. 类ES6 中有 class 语法。值得注意是,这里的 class 不是新的对象继承模型,它只是原型链的语法...

  • JavaScript 面向对象之原型链继承实现

    在ES6下可以通过class 关键字创建一个类, 也可以通过class .. extends 实现继承, 但只是...

  • 13.JS基础之class的构建与继承

    class为es6推出的,本质上就是原型链继承的语法糖,例如有class People ,typeof Peopl...

  • class 的继承

    ES6 中 class 的继承用关键字 extends 声明: 现在实例 c 既有自己的方法也继承了父类 Shap...

  • 使用ES5实现ES6的Class

    ES5的寄生组合式继承 ES6的Class 关于Class的语法推荐看这里:es6.ruanyifeng.com/...

网友评论

      本文标题:es6语法Class关键字和继承

      本文链接:https://www.haomeiwen.com/subject/wdlqectx.html