ES学习class类用法(十一)

这里写目录标题

一、class 类的用法

JS语言中,生成实例对象的传统方法是通过构造函数:

js 复制代码
        function Person(name,age){
            this.name=name;
            this.age=age;
        }
        Person.prototype.sayName=function(){
            return this.name
        }
        let p=new Person('小马哥',18);
        console.log(p);//Person {name: '小马哥', age: 18}

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的class改写,就是下面这样

js 复制代码
        class Person{
            // constructor方法 是类的默认方法,通过new命令生成对象实例时,自动调用该方法,一个类必须有constructor方法,如果没有定义,会被默认添加
            constructor(name, age) {
                this.name = name;
                this.age = age;
            }
            //等同于Person.prototype = function sayName(){}
            sayName(){
                return this.name;
            }
        }
        console.log(new Person('小马哥',18));

类的方法内部如果含有this,它默认指向类的实例.

二、类的继承

js 复制代码
        class Animal{
            // 实例化的时候会立即被调用
            constructor(name, age){
                this.name = name;
                this.age = age;
            }
            setName(){
                return this.name;
            }
            setAge(){
                return this.age;
            }
        }

        class Dog extends Animal{
            constructor(name, age, color){
                // 如果 子类 继承了 父类,且 子类 中写了构造器,则 子类 构造器的 super 必须要调用
                super(name, age);  // 等同于 Animal.call(this,name,age); 继承父类的属性
                this.color = color;
            }
            // 子类自己的方法
            setColor(){
                return `${this.name}是${this.age}岁了,它的颜色是${this.color}`;
            }
            // 重写父类的方法
            setName(){
                // super 相同于 Animal
                return this.name + super.setAge() + this.color;
            }
        }

        let d1 = new Dog('小黄', 28, 'red');
        console.log(d1.setAge());     // 调用继承父类的方法
        console.log(d1.setColor());   // 调用子类自己的方法
        console.log(d1.setName());    // 调用重写父类的方法
相关推荐
索西引擎8 小时前
【React】key 属性:协调算法中的元素标识机制与最佳实践
前端·javascript·react.js
小雪_Snow9 小时前
JavaScript 中的三种常用事件
开发语言·前端·javascript
蓝胖子酱10 小时前
在 Electron 中用 electron-store 实现加密存储与自定义格式文件
前端·javascript·数据库
胡渠洋10 小时前
postman学习
学习·测试工具·postman
To_OC11 小时前
LC 22 括号生成:刷完这道题,我终于搞懂回溯剪枝了
javascript·算法·leetcode
小二·11 小时前
Next.js 15 企业级实战:从项目搭建到CI/CD全链路(App Router + Server Components + Turbopack)
javascript·ci/cd·turbopack
像我这样帅的人丶你还11 小时前
🚀大文件上传的那些事
前端·javascript·架构
To_OC11 小时前
LC 39 组合总和:回溯入门必刷题,我踩过的两个坑都在这了
javascript·算法·leetcode
橘子星11 小时前
从零理解流式输出 —— 一个 Vue + DeepSeek 的前端实战
前端·javascript·人工智能
Amazing_Cacao11 小时前
CFCA精品可可产区风土解析(美洲):无情打破风味堆叠假象,建立时间轴上的层次动态阅读系统
学习