ES6类

# 面向对象和面向过程编程
1.面向过程:看步骤
2.面向对象:看对象,封装性,继承性,多态性。

在javascript中,对象是一组无序的相关属性和方法的集合。
类是泛指的一大类,对象是通过类实例化得到的一个具体对象。

# 声明类
1.constructor是构造函数,在new时会自动调用。
2.类里面的方法不需要加function关键字。
3.多个函数和方法之间不需要加逗号。
~~~js
    //1.声明类
    class Star {
        constructor(uname,gae){
            this.name = uname;
            this.age = age;
        }

        sing(){
            conlose.log('唱歌');
        }
    }

    //2.创建类
    var = new Star('刘德华',18);

~~~

# 类的继承
1.采用super可以调用父类的constructor,父类的方法只能从父类的condtructor里面调用方法.
2.就近原则:儿子里面有需要的方法,有则不再去父类里面查找。可以直接通过super.方法名直接调用父类的普通方法。
3.儿子可以在父亲的基础上扩展新的方法。需要通过super调用父类的构造函数。super必须在子类之前调用。
~~~js
     class Father {
            constructor(uname,uage) {
                this.uname = uname;
                this.uage = uage;
            }
            sum(){
                console.log(this.uage);
            }
        }
        class Son extends Father {
            constructor(uname,uage){
                //调用父类的构造函数
                super(uname,uage);
                this.uname = uname;
                this.uage = uage;
            }
        }
        var son = new Son(1,2);
        son.sum();
~~~

4.ES6里面类没有没有变量的提升,因此先要有类才能实例化类。类里面的共有属性和方法,必须加this.
5.类里面的this指向,方法里面指向的是方法的调用者,constructor指向实例化对象

# 静态成员
1.实例对象和函数对象的属性和方法不相通,属于类的属性和方法称为静态成员.用static标注。

# get和set使用
```js
    class Phone{
        get price(){
            console.log("价格属性被读取了");
            return 'iloveyou';
        }
 
        //必须要有参数输入
        set price(newVal){
            console.log('价格属性被修改了');
        }
    }
    //实例化对象
    let s = new Phone();

    //获得对应属性,会调用get方法,返回值是return后面的值
    //输出的是:价格属性被读取了,iloveyou
    console.log(s.price);

    //设置属性的值会调用set方法
    s.price = 'free';

```


posted @ 2022-07-25 19:49  DaiPlorais  阅读(59)  评论(0编辑  收藏  举报