首页 > 其他分享 >js里的类 class

js里的类 class

时间:2022-12-29 16:44:26浏览次数:31  
标签:console log js Person constructor class name

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

类的关键字:【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);// 我在吃米饭

 

标签:console,log,js,Person,constructor,class,name
From: https://www.cnblogs.com/grow-up-up/p/17012871.html

相关文章

  • 源码:ConfigurationClassParser
    /**Copyright2002-2017theoriginalauthororauthors.**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexcept......
  • js倒计时功能
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metaht......
  • main.js和 router文件夹里面的index.js引入的vue一定要一样
     当 main.js和router文件夹里面的index.js引入的vue不一样      错误:找不到<router-view>标签解决办法:将main.js和index.js的vue引入成为一样的......
  • 记:后端对字符串进行gzip压缩,前端js进行gzip解压
    最近有个需求要求对长字符串进行gzip压缩,然后在js进行解压缩的操作:publicstaticvoidmain(String[]args){try{StringlongString="www.baidu.com";......
  • JSX/TSX的好处
    1.之前没怎么用过JSX/TSX,基本上还是用html/css/js分离的方式,但是最近的一个@click="func(3)"的实现,发现了JSX的好处之一;如上,在html的某个元素里用了@click="func(3)"属......
  • 解决使用JSON.stringify时遇到的循环引用问题
    利用 js MessageChannel函数进行封装一个函数新建一个MessageChannel的实例,获取两个管道,我们从管道1发送数据,从管道2进行接收,我们这样就拿到新的数据,这样就能......
  • js. hw4
    functionensure(condition,message){//在条件不成立的时候,输出messageif(!condition){console.log('***测试失败:',message)}else{con......
  • nestjs 使用异常过滤器
    创建过滤器需要实现ExceptionFilter然后实现他的catch方法最后通过response.status(status).json返回(response通过host.switchToHttp().getResponse()获取)在局部使用则......
  • js 实现版本号排序
    //方法一:从左到右迭代,从高位判断,返回高位的大小结果注意:仅适用于版本号各个位的位数相同letversions=["1.45.0","1.5","6","2.3.4.5"];versions=versions.sor......
  • vue+nuxtJs+monaco制作Monaco Editor编辑器
    目录前言一、版本二、使用前配置nuxt.config.js三、使用四、附录1.kind提示图标类型2.默认action前言使用版本较低一、版本二、使用前配置nuxt.config.js实现下方......