js中的class类

目录

class类

1、声明类

2、实例化对象

3、get和set

4、静态方法

5、继承extends


class类

使用class这个关键词定义一个类,基于这个类创建实例以后会自动执行constructor方法,此方法可以用来初始化

1、声明类

class 类名{  }

   //1。声明类
        class Student {
            constructor(name, age) {
                //对象初始化
                this.name = name
                this.age = age
                this.subjects = []
            }
            set subject(subject) {
                this.subjects.push(subject)
            }
            get subject() {
                return this.subjects
            }
            //方法将来定义在原型上
            study() {
                console.log('hello world')
            }
        }

2、实例化对象

new 类() ---->默认会执行类中的constructor方法

   //2、实例化对象  new 类()--->默认会执行类中的constructor方法
        const s1 = new Student('zs', 12)
        console.log(s1.__proto__)//{constructor: ƒ, study: ƒ}
        s1.study()
        const s2 = new Student('ls', 22)
        // s2.subjects.push('chinese')
        // console.log(s2.subjects)//['chinese']
        s1.subject = 'chinese'
        console.log(s1.subject)//['chinese']
        console.log(s2)//Student {name: 'ls', age: 22, subjects: Array(0)}
        console.log(s1.study === s2.study)//true

3、get和set

get可以用来得获取属性,set可以去设置属性

      class Person {
            constructor() {
                this.hobbies = [];
            }
            //设置属性
            set hobby(hobby) {
                this.hobbies.push(hobby);
            }
             //获取属性
            get hobby() {
                return this.hobbies;
            }
        }
        let person = new Person();
        person.hobby = 'basketball ';
        person.hobby = 'football ';
        console.log(person.hobby);

4、静态方法

静态方法有两种形式:

一种是:类名.静态属性或方法 = 值

另一种是:在类里面添加静态的方法可以使用static这个关键词,静态方法就是不需要实例化类就能使用的方法

静态方法里的this是类本身

 // 1 声明类
      class Student {
        constructor(name, age) {
          // 对象初始化
          this.name = name
          this.age = age
          this.subjects = []
        }

        // 方法将来定义在原型上
        study() {
          console.log(this)
          console.log('good good study')
        }
        // 2 通过static定义静态方法
        static eat() {
          console.log(this) // 类本身
          console.log('eating')
        }
      }

      // 静态方法  1  类名.静态属性或方法  = 值
      // Student.eat = function () {
      //   console.log('eating')
      // }
      // 2 实例化对象 new 类() -> 默认会执行类中的constructor方法
      const s1 = new Student('zs', 18)
      Student.eat()
      s1.study()

5、继承extends

super()调用父类的构造函数

super()相当于父类的实例,原型上的方法

 子类定义方法想要父类的方法通过 super.父类的方法()

父类用箭头函数另写的方法是实例方法

 //父类
        class Father{
            money=10000000//实例属性
            //实例方法
            say=()=>{
                console.log('saying')
​
            }
            constructor(school){
                this.car='audi'
                this.school=school
            }
            //原型方法
            manager(){
                console.log('中西管理')
            }
        }
​
        //子类
​
        class Son extends Father{
            constructor(){
                //必须先调用父类的构造函数
                super('哈佛')//调用父类的构造函数
            }
            manager(){
                //super 相当于父实例
                super.manager()
                console.log('孙子兵法管理模式')
            }
        }
​
        const s1=new Son()
        const s2=new Son()
        console.log(s1.say===s2.say)//false
        console.log(s1.money)//10000000
        console.log(s1.car)//audi
        console.log(s1.school)//哈佛
        s1.manager()

new出来的实例对象,调用父类的实例方法是不相等的

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript ,`class` 是一种创建对象的模板或蓝图,用于定义对象的属性和方法。以下是 `class` 的基本用法: 1. 定义: ```javascript class MyClass { constructor() { // 构造函数,用于初始化对象实例 } method1() { // 定义的方法 } method2() { // 定义另一个的方法 } } ``` 使用 `class` 关键字定义一个,并在内部定义构造函数和其他方法。构造函数使用 `constructor` 关键字定义,用于初始化对象实例。其他方法则直接在内部定义,不需要使用关键字。 2. 创建对象实例: ```javascript const myObj = new MyClass(); ``` 使用 `new` 关键字和名来创建对象实例。可以像调用普通函数一样调用来创建新的对象。 3. 调用对象方法: ```javascript myObj.method1(); myObj.method2(); ``` 通过对象实例使用点 `.` 语法调用定义的方法。 4. 的继承: ```javascript class ChildClass extends ParentClass { constructor() { super(); // 子构造函数的初始化 } childMethod() { // 子独有的方法 } } ``` 使用 `extends` 关键字实现的继承。子可以继承父的属性和方法,并添加自己特有的属性和方法。在子的构造函数,需要使用 `super()` 调用父的构造函数。 这些是 `class` 的基本用法。通过定义,可以创建多个对象实例,并共享的属性和方法。还允许使用继承机制,实现的层次结构和代码重用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值