ES6 面向对象

类的写法

{
    // ES6面向对象:
    // 类的写法:
    class Person{//typeof function类型
        age = 20;//属性也可以这样写 -> 这是公有属性,外内都可以调用;
        #hei = "178cm";//私有属性
        constructor(name){//-> function Person(name){}
            this.name = name;
        }
        fn(){// -> Person.prototype.fn = function(){}
            console.log("hello")
        }
        getAge(){
            console.log(this.age);
        }
        getHei(){
            console.log(this.#hei);
        }
    }

    let zhangsan = new Person("张三");
    console.log(zhangsan);
    zhangsan.getAge();//20
    zhangsan.getHei();//178cm 注意用法
    console.log(zhangsan.hei);//undefined
}

静态属性和静态方法

{
    class Person{
        static age = 10;//静态属性->1.属于类的属性;2.不需要实例化就可以调用
        static foo(){//静态方法
            console.log("foo")
        }
        constructor(name){
            this.name = name;
        }
    }

    console.log(Person.age);
    Person.foo();
}

继承

{
    // 继承
    class Dad{
        constructor(height){
            this.height = height;
        }
        foo(){
            console.log("foo");
        }
        setStyle(){
            console.log("父类一些逻辑")
        }
    }

    class Son extends Dad{//extends关键字
        constructor(height){
            super(height);//==调用了父类的构造函数-> 这里把构造函数和原型都进行继承过来了!
            // 注意参数传递
        }
        setStyle(){//可以 扩展逻辑 使用 super.父类();
            super.setStyle();//调用父类函数
            console.log("子类一些逻辑");
        }
    }

    let zhangsan = new Son("178cm");
    console.log(zhangsan);
    zhangsan.setStyle();
}

猜你喜欢

转载自www.cnblogs.com/Afanadmin/p/12359852.html
今日推荐