es6 class类的使用总结

本文详细介绍了JavaScript中的类声明、成员变量、getter和setter方法、私有成员及方法、静态成员、单例模式以及类的加载顺序。通过实例展示了如何在JS中创建和使用类,包括构造函数、私有变量的访问以及静态方法的调用。同时,讨论了类的加载顺序和单例实现,为理解JS类提供了深入的见解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 js类的声明

2 js类的成员变量

3 js类的getter和setter方法

4 js类的私有成员变量及私有方法

5 js类的静态成员变量及静态方法

6 js类的单例实现方式探讨

7 js类的加载顺序探讨


 

/**
 * js类的声明
 */
MyClass = class MyClass{
    
    /**
     * 成员变量,公有
     */
    name = '我的自定义类';

    /**
     * 私有成员变量,使用'#'井号开头定义变量,外部不可访问
     */
    #className = 'MyClass';

    /**
     * 静态变量,类加载时便会初始化,从上到下顺序初始化(具体尚未详细验证研究)
     */
    static #instance = new MyClass();

  /*
   * js类的构造方法
   * 在此处执行一些初始化逻辑或调用初始化方法
   */

  constructor(){
    console.log('constructor MyClass');
    // 单例的一种方式, 禁止重复初始化
    if(globalThis.MyClass === undefined){
        this.#doInit();
    }

  }

    /*
     * 私有成员方法,用#井号开头,将一个匿名函数赋值给私有成员变量;
     * (这是一种兼容方法,兼容nodejs12版本)
     * 在最新的^chrome 89.0.4389.114版本以上可以直接写为#doInit(){}
     */
    #doInit = ()=>{
        console.log('doInit sTh...');
        this.name += String(Math.random()).substr(2);
    }

    /*
     * 成员方法声明,可直接通过对象调用
     */
    sayClassName(){
        // 私有成员变量直接用 this.# + 私有变量名 来访问,只可在类内部访问
        let cn = this.#className;
        console.log('我的类名为: ', cn);
    }

    /*
     * 静态成员方法声明,可直接通过类调用该方法
     */
    static getInstance(){
        //私有静态成员访问方式: 类名.# + 私有静态变量名
        return MyClass.#instance;
    }

    /*
     * getter方法,可改变返回内容,也可以控制访问权限
     */
    get name(){
        return '获取name为 ' + this.name;
    }

    /*
     * setter方法,可进行值的有效性验证等等等处理
     */
    set name(aName){
        console.log('更改新的name值: ', aName);
        this.name = aName;
    }

} 

js类的加载顺序探讨

尚未研究, 自己手动控制.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值