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());    // 调用重写父类的方法
相关推荐
炫饭第一名7 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
进击的尘埃8 小时前
Vue3 响应式原理:从 Proxy 到依赖收集,手撸一个迷你 reactivity
javascript
willow8 小时前
JavaScript数据类型整理1
javascript
LeeYaMaster8 小时前
20个例子掌握RxJS——第十一章实现 WebSocket 消息节流
javascript·angular.js
UIUV9 小时前
RAG技术学习笔记(含实操解析)
javascript·langchain·llm
颜酱11 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
FansUnion11 小时前
我如何用 Next.js + Supabase + Cloudflare R2 搭建壁纸销售平台——月成本接近 $0
javascript
左夕12 小时前
分不清apply,bind,call?看这篇文章就够了
前端·javascript
滕青山13 小时前
文本行过滤/筛选 在线工具核心JS实现
前端·javascript·vue.js
时光不负努力13 小时前
编程常用模式集合
前端·javascript·typescript