对象的属性重复了,于是有了类和构造函数

    1. class Person {
    2. name
    3. age
    4. sayHi(){}
    5. constructor(name,age){
    6. this.name = name
    7. this.age = age
    8. }
    9. }
    10. let person1 = new Person('frank', 18)
    11. let person2 = new Person('jack',23)

    ts

    1. class Person {
    2. sayHi(): void {}
    3. constructor(public name: string , public age: number){}
    4. }
    5. // public :这个对象有一个公开的属性 name,类型是string
    6. let person1 = new Person('frank', 18)
    7. let person2 = new Person('jack',23)

    image.png

    • 类总是把对象的属性提前写好,避免重复
    • 类里面的字段会变成对象的属性
    • 所有的函数都是公用的(person1和person2的sayHi 是同一个函数)
    • 而非函数属性是各个对象自有的(person1的name和person2的name 是不一样的)

    构造函数

    • 属性名虽然可以提前写好,但是属性值不行

    (name,age 作为key,可以提前写,value需要通过构造函数传入)

    • 所以需要构造函数接受参数,初始化属性值
    • 构造函数不需要写return,默认会return新对象

    对象自有函数:
    加个等号就可以了。(mySayHi)

    1. class Person {
    2. name
    3. age
    4. mySayHi = ()=>{} // 自用
    5. sayHi(){} // 共用
    6. constructor(name,age){
    7. this.name = name
    8. this.age = age
    9. }
    10. }
    11. let person1 = new Person('frank', 18)
    12. let person2 = new Person('jack',23)

    对象属性共有

    1. class Person {
    2. static kind = '人类'
    3. }

    image.png