class 类

// 任何一个类 ,它的内部都是以 constructor 方法开始的
    class Parent{
        constructor(name="wukong",weapon){
              this.name=name
              this.weapon = weapon
        }
        getName(){  // get方法,获取实例对象中的属性(不定义也可以,定义只是为了对获得的数据做修改)
              console.log(this.name)
        }
        setName(value){  // set方法,设置或修改实例对象中的属性(不定义也可以,定义只是为了对要设置的数据做修改)
                 this.name = value
        }
        static tell(){  // 定义静态方法时,使用static 关键字
                console.log('tell')
        }

    }
        Parent.story = '西游记';    //定义静态属性,静态属性没有关键字,所以在定义了类之后,直接添加
        Parent.tell();  //调用静态方法的时候,是在 类 上调用,而不是在 实例 上调用
        console.log(Parent.story);  // 查看静态属性,同样也是在 类 上查看
    
    var obj = new Parent('sunwk','jingubang!')
    
    console.log(obj);   // {name: "sunwk", weapon: "jingubang!"}
    obj.getName();  // sunwk
    obj.setName('tangsanzang')
    console.log(obj); //{name: "tangsanzang", weapon: "jingubang!"}

    class Child extends Parent{
        constructor(name="bajie",weapon ){  // 指定了这个方法传入的参数,以及它的默认值
            super(name)          // 使用super()的时候,就相当于调用了父类中的constructor
                                  // 并将子类中的name传入,覆盖父类中的name 
            this.weapon = "dingpa!"  // 如果子类中需要添加新的属性,必须在 super() 之后写
        }
        
    }
    
    var obj1 = new Child();
    console.log(obj1)  // {name: "bajie", weapon: "dingpa!"}


你可能感兴趣的:(class 类)