ES6通过class直接创建类

这篇博客介绍了JavaScript中的类创建、继承以及封装特性。通过示例展示了如何创建类、使用构造函数、重写父类方法。接着讲解了私有属性的声明,以及使用get和set方法进行属性的访问控制。此外,还探讨了静态属性和方法的用法,包括如何调用静态方法和计数器的应用。最后,文章强调了静态属性和方法在不需实例化对象的情况下直接调用的优势。
摘要由CSDN通过智能技术生成

1.class創建類

 class People{
            //构造函数
            constructor(name,age,height){
                this.name=name
                this.age=age
                this.height=height
            }
            run(){
                console.log("正在跑")
            }
        }
        // let p1=new People("王一",21,193)
        // let p2=new People("王二",22,187)
        // console.log(p1)
        // console.log(p2)
        // console.log(p1.run===p2.run)
        //继承一个学生类 
        class Student extends People{
            constructor(name,age,height,score){
                //super()方法  父级的构造函数
                super(name,age,height)
                //super必须写在 自己属性的上方
                this.score=score
            }
            showInfo(){
                console.log(this.name)
            }

            //覆蓋父類的方法
            run(){
                console.log(this.name+"正在跑")
            }
        }
        let s1=new Student("王一",21,22,65)
        console.log(s1 instanceof Student)  //true
        console.log(s1)  //Student {name: '王一', age: 21, height: 22, score: 65}

2.私有屬性

封装性 :私有属性内容  get 和set方法来获取和设置对应属性

        class Student{

        #uname //定議私有屬性

        constructor(name){

            this.#uname=name

        }

        getName(){

            return this.#uname    

        }

    }

    let s1=new Student("Robert")

    console.log(s1) //Student {#uname: 'Robert'}

    console.log(s1.#uname) //Uncaught SyntaxError: Private field '#uname' must be declared in       an  enclosing class

3.静态属性和静态方法

   由类来直接调用和获取,不需要 实例化对象来实现(如:数组  push()  .length)

   Array.from() 将集合转化为数组

   let lis=document.getElementsByTagName("li")

       // console.log(lis)

        lis=Array.from(lis) //类具有的方法 静态方法

        //forEach 循环遍历数组

        lis.forEach(item=>{

            item.οnclick=function(){

                console.log(item)

            }

        })

//static 关键字

        //用静态属性 做一个  计数器 来统计 有多少个对象被创建了

        class People{

            static size=0

            constructor(){ //实例化对象的属性

                this.age=21

                //静态属性 size++

                People.size++

            }

            static show(){

                console.log("我是静态方法")

            }

        }

        let p1=new People()

        let p2=new People()

        let p3=new People()

        let p4=new People()        

         p1.show()//Uncaught TypeError: p1.show is not a function

         People.show()//我是静态方法

        console.log(People.size)//4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值