zoukankan      html  css  js  c++  java
  • JS-15 (class)

    ES6中新增的创建一个类型的新关键词

    原js中一个类型,一定是两部分,而不仅仅是一个对象:
    ①构造函数:负责定义该类型将来所有子对象的统一属性解构,同时负责创建子对象;

    ②原型对象:负责替将来这个类型的所有子对象保存共有的属性和方法定义。

    构造函数和原型对象是分开定义的。

    class:包裹原来的构造函数和原型对象。

    步骤

    ①用class{}包裹原来的构造函数和原型对象;

    ②将构造函数名提升为整个class的名字,今后所有构造函数统一命名为constructor;

    ③所有原型对象方法,直接放在class中,不用加类型名.prrototype.方法名

    class Student{
        constructor(sname,sage){
            this.sname=sname;
            this.sage=sage;
        } 
        intr(){
            console.log(`I'm ${this.sname}, I'm ${this.sage}`);
        }
        intr2(){
            console.log(`我是 ${this.sname}, 今年 ${this.sage} 岁`);
        }
    } 
    var xlx=new Student('x_l_x',18);
    xlx.intr();
    xlx.intr2();

    class的继承:

    class依然可以使用Object.setPrototypeOf(子对象,父对象)

    实际继承方案

    class 子类型 extends 父类型{
      //此时子类型有了一个super()方法,子类型中调用super()等效于调用父类型中的构造函数,来执行父类型中构造函数内的代码,
      将父类型规定的属性解构,添加到未来的孙子对象中。不过需要险些super(),再写子类型自己的属性。即super()必须放在最开始的位置。
    }

    ES6实现两种类型的继承:

    // ES6实现两种类型之间的继承
    // 父类型(共有的属性和方法)
    class Enemy{
        constructor(x,y){
            this.x=x;
            this.y=y;
        }
        fly(){
            console.log(`一个敌人当前位置${this.x},${this.y}`);
        }
    }
    // 子类型1
    class Plane extends Enemy{
        constructor(x,y,score){
            super(x,y);
            this.score=score;
        }
        getScore(){
            console.log(`击落一架敌机,获得${this.score}分`);
        }
    }
    // 子类型2
    class San extends Enemy{
        constructor(x,y,award){
            super(x,y);
            this.award=award;
        }
        getAward(){
            console.log(`击落一个降落伞,获得奖励${this.award}`);
        }
    }
    var p1=new Plane(100,100,10);
    var s1=new San(200,200,'1 live');
    p1.fly();         //一个敌人当前位置100,100
    p1.getScore();    //击落一架敌机,获得10分
    s1.fly();         //一个敌人当前位置200,200
    s1.getAward();    //击落一个降落伞,获得奖励1 live
  • 相关阅读:
    Practice II 字符串
    Euleriar Path 入门
    2-SAT 入门
    Practice I 图论
    游戏中寻找学习JAVA的乐趣之坦克大战系列5-坦克的动态参数
    JQuery教程:实现轮播图效果
    HTML表格应用
    菜鸟Vue学习笔记(三)
    Java成神路上之设计模式系列教程之一
    JVM垃圾回收机制之对象回收算法
  • 原文地址:https://www.cnblogs.com/codexlx/p/12488387.html
Copyright © 2011-2022 走看看