• javascript 原型继承 与class extends 继承对比


     
    //父类 Animal
    function Animal (name) {
        this.name = name;
        this.sleep = function () {
            console.log(this.name + '正在睡觉!')
        }
    }
    
    //cat 是 Animal 的子类
    function Cat (name, age) {
        Animal.call(this, name);
        //子类 Cat 新增加的 成员 age eat()
        Cat.prototype.age = age;
        Cat.prototype.eat = function () {
            console.log(this.name + 'is cat ' + '正在吃东西' + ' my age is ' + this.age)
        }
    }
    
    
    //---------调用代码---------------------
    var animal_obj = new Animal('动物');
    animal_obj.sleep();
    
    var cat_obj = new Cat('猫', 10);
    cat_obj.sleep();
    cat_obj.eat();
    
    
    
    //-------------------------------------------------------class------------------------------------------------------------------
    //父类 Animal
    class Animal {
        constructor(name) {
            this.name = name;
        }
        sleep () {
            console.log(this.name + '正在睡觉!')
        }
    }
    
    
    //cat 是 Animal 的子类
    class Cat extends Animal {
        //构造函数
        constructor(name, age) {
            super(name); //super 选调用父类构造方法
            this.age = age; //子类新增属性成员 age
        }
        //子类新增属性成员 eat(), class定义的成员函数不须要用 this.,也不用 function
        eat () {
            console.log(this.name + 'is cat ' + '正在吃东西' + ' my age is ' + this.age)
        }
    }
    
    //---------调用代码---------------------
    var animal_obj = new Animal('动物');
    animal_obj.sleep();
    
    var cat_obj = new Cat('猫', 10);
    cat_obj.sleep();
    cat_obj.eat();
    //-------运行结果一模一样--------------------------
     
     
  • 相关阅读:

    循环队列
    flask开发遇到 Must provide secret_key to use csrf解决办法
    python中set集合的使用
    python中mysqldb的用法
    Pycharm用上未加环境变量的Anaconda
    使用anaconda prompt和youtube-dl下载Youtu视频
    VirtualBox 6.1.12安装部署Ubuntu18.04
    菜鸡记录自己用visual studio2019写第一个C++
    安装MATLAB2019a
  • 原文地址:https://www.cnblogs.com/qinlongqiang/p/11495211.html
Copyright © 2020-2023  润新知