js里的类 class

以前不知道为啥,总觉得这个类很高深莫测,然后自己在开发业务中也没有需要使用它的地方。所以就一直没去了解,今天有时间看了一下文档,在这稍微记录一下自己的总结。

类的关键字:【class】【constructor】【extends】【super】【get】【set】【static】

类是用来创建对象的模板。类的名称需要首字母大写,constructor是构造函数,可以在里面定义属性。

class 类名{
    constructor(参数){}  
   method1(){}
   method2(){}
}

1. class类

class Person{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
  getInfo(){
    return "姓名:" +this.name+";年龄:"+this.age;
  } }

let p = new Person("张三",38);
console.log(p.name);// 张三
console.log(p.age);// 38
console.log(p.getInfo());// 姓名:张三;年龄:38

每个类可以通过.name获取类名;如上面示例,Person.name // Person

2. extends 类继承

类可以继承的,通过extends,以及super()调用父类的构造函数,就可以继承类的属性和方法。

class Child extends Parent{
   constructor(参数){
        super(父类需要的参数)
    }  
}
class Son extends Person{
    constructor(name,age,hobby){
        super(name,age);
        this.hobby = hobby;
    }
}
let s = new Son("小张",8,"看书");
console.log(s.hobby);// 看书
console.log(s.name);// 小张
console.log(s.age);// 8
console.log(s.getInfo());// 姓名:小张;年龄:8

3. get和set

类中我们可以使用 getter 和 setter 来获取和设置值。

class Person {
    constructor(name){
        this.name = name
    }
    get _name(){
         return this.name
    }
    set _name(newName){
        this.name = newName
    }
}    

let p = new Person("张三");
console.log(p._name);// 张三
p._name = "李四";
console.log(p._name);// 李四

4. static

使用static关键字修饰的方法,叫做静态方法,也叫做类方法,对的没错,这个方法只属于类,而不属于对象。上面的extends扩展类时,这个静态方法也会继承的哈。静态方法中如果直接使用构造函数定义的属性也是不行的。

class Person {
    constructor(food){
        this.food = food
    }
    static eat(v){
     console.log(this.food);//undefined retutrn
"我在吃"+v; } }

let p = new Person("米饭");
p.eat();// error p里面并没有eat方法;
Person.eat(p.food);// 我在吃米饭

 

posted @ 2022-12-29 16:38  蛙仔  阅读(27)  评论(0编辑  收藏  举报