JavaScript类的使用

类的使用

1、定义:类关键字

使用关键字class可以在JS中声明一个类:     

   Class User{

            //类的主体

        }

如果在定义类时没有指定类名,可以通过类表达式,将类分配给变量:     

   const UserClass = class{

            //类的主体

        }

创建类的实例,实例是包含类所描述的数据和行为的对象 。

使用new运算符实例化该类,语法:instance = new Class()

2、初始化:constructor()

constructor(param1,param2,...)是用于初始实例的类主体的一种特殊方法,在这里可以设置字段的初始值或进行任何类型的对象设置     

   Class User{

            constructor(name){

                this.name = name

            }

        }

在构造函数中,this值等于新创建的实例,用于实例化类的参数成为构造函数的参数。

3、字段

    类字段是保存信息的变量,字段可以附加到两个实体:

        (1)类实例上的字段

        (2)类本身的字段(也称为静态字段)

    字段有两种级别可访问性:

        (1)public:该字段可以在任何地方访问

        (2)private:字段只能在类的主体中访问

    3.1、公共实例字段

  class SomeClass{

            field1;

            field2 = "Initial value"

        }

对公共字段你的访问或更新没有限制,可以读取构造函数、方法和类外部的公共字段并将其赋值。

    3.2、私有实例字段

隐藏对象内部数据的方法是使用私有字段,这些字段只有在它们所属的类中读取和更改,类的外部世界不能直接更改私有字段。

私有字段只能在类的主体中访问。

在字段前面加上#使其成为私有的,每次处理字段时都必须保留前缀#声明它,读取它或修改它。

    3.3、公共静态字段

使用特殊的关键字后面跟字段名:如static myStaticField

要访问静态字段,必须使用后跟字段名称的类。

    3.4、私有静态字段

要使静态字段成为私有的,只要在字段前面加上#符号:static #myPrivateStaticField

只能在User类中访问,类的外部不会干扰限制机制。

4、方法

方法保存数据,但是修改数据的能力由属于类的一部分特殊功能实现:方法。

JS类同时支持实例和静态方法。

    4.1、实例方法

实例方法可以访问和修改实例数据,是来方法可以调用其他实例方法,也可以调用任何静态方法。

方法也可以是私有的,方法名称以#开头即可。

例子:

            class User {

                #name;

                constructor(name) {

                    this.#name = name;

                }

                #getName() {

                    return this.#name;

                }

                nameContains(str) {

                    return this.#getName().includes(str);

                }

                }

                const user = new User('Fundebug');

                user.nameContains('Fun');   // => true

                user.nameContains('Code'); // => false

                user.#getName(); // SyntaxError is thrown

#getName()是一个私有方法。在方法nameContains(str)中,可以这样调用一个私有方法:this.#getName()。

由于是私有的,#getName()不能在用User 类主体之外调用。

    4.2、getters和setters

在尝试获取字段值时执行getter,在尝试设置值时使用setter

    4.3、静态方法

静态方法是直接附加到类的函数,它们持有与类相关的逻辑,而不是类的实例

要创建一个静态方法,请使用特殊的关键字static和一个常规的方法语法:static myStaticMethod(){}。

使用静态方法,有两个规则需要记住:

(1)静态方法可以访问静态字段

(2)静态方法不能访问实例字段

静态方法也可以是私有的:static #staticFunction(){},同样只能在类主体中调用私有静态方法。

5、继承:extends

JS中的类使用extends关键字支持单继承

在class Child extends Parent{}表达式中,Child类从Parent继承构造函数,字段和方法

注:父类的私有成员不会被子类继承

    5.1、父构造函数:conostructor()中的super()

如果希望在子类中调用父类构造函数,则需要使用子类构造函数中可用的super()特殊函数

注:在使用this关键字前,必须在子函数构造函数中执行super(),调用super()确保父构造函数初始实例化

    5.2、父实例:方法中的super 

如果希望在子方法中访问父方法,可以使用特殊的快捷方式super。

子类方法直接从父类中访问方法,这个特性叫做方法重写。

注:也可以在静态方法中使用super来访问父类的静态方法。

6、对象类型检查:instance of

object instance if Class确定object是否为Class实例的运算符。

7、类和原型

类是在原型继承基础上构建的,每个类都是一个函数,并在作为构造函数调用时创建一个实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值