zoukankan      html  css  js  c++  java
  • js中的class

    js中的class

    1. 类写法

      class SuperClass {
          constructor(option) {
              this.a = option;
          }
      
          fn() {
              console.log(this.b);
          }
      
          static staticMethod() {
              console.log("静态方法只能通过类调用")
          }
      
          set sa(value){
              this.a = value;
          }
      
          get sa() {
              return this.a;
          }
      }
      
      class SubClass extends SuperClass {
          constructor(option) {
              super(option.a); // 调用父类的构造函数
              this.b = option.b
          }
      }
      
      const sub = new SubClass({a: "aaa", b: "bbb"});
      sub.sa = "aa"
      console.log(sub.sa); // aa
      sub.fn(); // bbb
      SubClass.staticMethod(); // 静态方法只能通过类调用
      
    2. 处理private数据

      方式一:使用Symbols
          symbol是唯一的并且是不可变的数据类型
          class Demo {
              constructor(option) {
                  const key = Symbol("key");
                  this[key] = option;
                  this.fn = () => {
                      console.log(this[key])
                  }
              }
          }
      
          const demo = new Demo("aaa");
          console.log(demo[Symbol("key")]); // undefined
          demo.fn(); // aaa
      
      方式二:使用WeakMaps
          WeakMaps键名是弱引用类型,键值可以是任意类型
          如果键没有被其他强类型引用,会自动被垃圾回收掉
          const key = new WeakMap();
          class Demo {
              constructor(option) {
                  key.set(this, option);
                  this.fn = () => {
                      console.log(key.get(this))
                  }
              }
          }
          const demo = new Demo("aaa");
          console.log(key.get[demo]); // undefined
          demo.fn(); // aaa
      
  • 相关阅读:
    虚拟化技术KVM
    Rsync+Inotify实现文件自动同步
    第一次使用博客园
    kmp算法分析
    程序可移植性分析(一)数据类型
    strings用法小记
    size用法小记
    readelf用法小记
    nm用法小记
    ar用法小记
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/10350581.html
Copyright © 2011-2022 走看看