JavaScript教程:class类

说明

ES6中,JavaScript 也有 class 类,与 java中的写法很类似

  • class 关键字定义了类
  • constructor 方法是构造方法
  • new 通过 new constructor() 创建对象
  • this 关键字代表实例对象
  • extends 关键字表示继承某个类
  • super() 调用父类构造方法

定义类

class 类名{

}

例子

class Phone{

}
class Student{

}

创建对象

通过定义好的类,创建对象:

const iphone13 = new Phone()

const huawei = new Phone()
const lilei = new Student()


const hanmeimei = new Student()

构造方法

作用:

  1. 创建对象时,自动调用构造方法
  2. 给实例属性初始值
constructor(形参1,形参1){

}

解释:

  • 构造函数名是 constructor

定义属性

根据同一张图纸生成的手机,虽然一模一样,但有些部分是不同的,比如:手机序列号

用户买回后,又给手机进行自定义设置,如:手机名、wifi名 等

这些就是 属性

构造方法中定义属性(荐)

例子1

定义类:

class Phone{
    // 构造函数有形参
    constructor(name,sn){
        this.name = name
        this.sn = sn
    }
}

创建对象时,是通过构造函数,要传参:

const nokia = new Phone("李雷的手机","123")
console.log(nokia.name)
console.log(nokia.sn)

const iphone = new Phone("韩梅梅的手机","456")
console.log(iphone.name)
console.log(iphone.sn)

例子2

定义类:

class Student{
    constructor(name,age,sex){
        this.name = name
        this.age = age
        this.sex = sex
    }
}

使用该类创建对象:

const lilei = new Student("李雷",20,'男')
const hanmeimei = new Student("韩梅梅",19,'女')

console.log(lilei.name)
console.log(lilei.age)
console.log(lilei.sex)

console.log(hanmeimei.name)
console.log(hanmeimei.age)
console.log(hanmeimei.sex)

在类中定义属性(不推荐)

class 类名{
    属性1 : 类型 = 值1
    属性2 = 值2 // 类型可省略,根据初始值自动推论
}

例子1

在类中定义属性:

class Phone{
    name = 'iphone13'
    sn = '123'
}

通过实例对象访问属性:

const iphone = new Phone()
console.log(iphone.name)
console.log(iphone.sn)

例子2

在类中定义属性:

class Student{
    age = 20
    sex = '男' // 类型可省略,根据初始值自动推论 sex 是 string类型
}

通过实例对象访问属性:

const lilei = new Student()

console.log(lilei.age)
console.log(lilei.sex)

实例方法

函数的缺点

像下面这些函数,数量多了,就会混乱

// 函数 “吃”
function eat(){

}

// 函数 “打电话”
function call(){

}
解决

将函数放入到类中

实例方法的介绍

将函数放入到类中,就是 方法

作用:更好的封装,如:将 eat() 放入到 Student 类中,将 call() 放入到 Phone 类中,更加清晰

例子

class Phone{
    // 打电话
    call(number)  {
        console.log("打电话给:",number)
    }
    // 手机支持计算器的加法运算
    add(a , b) {
        return a + b
    }
}

const nokia = new Phone()
nokia.call( "110" )
const res = nokia.add(1,2)
console.log(res)

例子

<script>
    class Phone{
        // 构造函数,创建对象时,就是调用构造函数
        constructor(){
            console.log("执行 constructor() ")
            this.screen = 6.2
            this.cpu = "A15"
            this.ram = 4 // 内存

        }
        // 对象中的方法
        call(num){
            console.log("打电话给:",num)
        }
    }

    // 创建对象,通过构造函数
    const iphone = new Phone()
    // 修改属性
    iphone.cpu = "A20"
    // 访问属性
    console.log("屏幕:",iphone.screen)
    console.log("cpu:",iphone.cpu)
    console.log("ram:",iphone.ram)

    // 调用对象方法
    iphone.call(110)
</script>

原文出处:/show_1IX3Bv7qIZw3.html