开发者社区> 问答> 正文

ES6 中类的定义

ES6 中类的定义

展开
收起
茶什i 2019-11-22 16:37:33 1014 0
1 条回答
写回答
取消 提交回答
  • // 1、类的基本定义
    class Parent {
      constructor(name = "小白") {
        this.name = name;
      }
    }
    
    // 2、生成一个实例
    let g_parent = new Parent();
    console.log(g_parent); //{name: "小白"}
    let v_parent = new Parent("v"); // 'v'就是构造函数name属性 , 覆盖构造函数的name属性值
    console.log(v_parent); // {name: "v"}
    
    // 3、继承
    class Parent {
      //定义一个类
      constructor(name = "小白") {
        this.name = name;
      }
    }
    
    class Child extends Parent {}
    
    console.log("继承", new Child()); // 继承 {name: "小白"}
    
    // 4、继承传递参数
    class Parent {
      //定义一个类
      constructor(name = "小白") {
        this.name = name;
      }
    }
    
    class Child extends Parent {
      constructor(name = "child") {
        // 子类重写name属性值
        super(name); // 子类向父类修改 super一定放第一行
        this.type = "preson";
      }
    }
    console.log("继承", new Child("hello")); // 带参数覆盖默认值  继承{name: "hello", type: "preson"}
    
    // 5、ES6重新定义的ES5中的访问器属性
    class Parent {
      //定义一个类
      constructor(name = "小白") {
        this.name = name;
      }
    
      get longName() {
        // 属性
        return "mk" + this.name;
      }
    
      set longName(value) {
        this.name = value;
      }
    }
    
    let v = new Parent();
    console.log("getter", v.longName); // getter mk小白
    
    v.longName = "hello";
    console.log("setter", v.longName); // setter mkhello
    
    // 6、类的静态方法
    class Parent {
      //定义一个类
      constructor(name = "小白") {
        this.name = name;
      }
    
      static tell() {
        // 静态方法:通过类去调用,而不是实例
        console.log("tell");
      }
    }
    
    Parent.tell(); // tell
    
    // 7、类的静态属性:
    
    class Parent {
      //定义一个类
      constructor(name = "小白") {
        this.name = name;
      }
    
      static tell() {
        // 静态方法:通过类去调用,而不是实例
        console.log("tell"); // tell
      }
    }
    
    Parent.type = "test"; // 定义静态属性
    
    console.log("静态属性", Parent.type); // 静态属性 test
    
    let v_parent = new Parent();
    console.log(v_parent); // {name: "小白"}  没有tell方法和type属性
    
    2019-11-22 16:39:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
ES6 必知必会 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载