为了账号安全,请及时绑定邮箱和手机立即绑定

es 6 类定义静态方法 静态常量 私有成员

标签:
JavaScript

静态方法

class Foo {  static classMethod() {    return 'hello';
  }
}

静态常量

class Foo  {  constructor() {    super();
  }  static get StaticData(){    return "default"
  }
}

只定义get方法不定义 set,有static set 则可修改了

私有成员

let _counter = new WeakMap();let _action = new WeakMap();class Countdown {  constructor(counter, action) {
    _counter.set(this, counter);
    _action.set(this, action);
  }
  dec() {    let counter = _counter.get(this);    if (counter < 1) return;
    counter--;
    _counter.set(this, counter);    if (counter === 0) {
      _action.get(this)();
    }
  }
}let c = new Countdown(2, () => console.log('DONE'));

c.dec()
c.dec()// DONE

使用WeakMap

const _counter = Symbol('counter');  const _action = Symbol('action');  
  class Countdown {      constructor(counter, action) {          this[_counter] = counter;          this[_action] = action;
      }
      dec() {          if (this[_counter] < 1) return;          this[_counter]--;          if (this[_counter] === 0) {              this[_action]();
          }
      }
  }// properties whose keys are symbols:

http://www.2ality.com/2016/01/private-data-classes.html



作者:proud2008
链接:https://www.jianshu.com/p/469bdd51d99a


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消