class 类

作者: 时和岁稔 | 来源:发表于2018-01-22 17:53 被阅读1次
    // 任何一个类 ,它的内部都是以 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 类

        本文链接:https://www.haomeiwen.com/subject/ibhraxtx.html