jyzwf / blog

在Issues里记录技术得点滴
17 stars 3 forks source link

通过`proxy`实现随取随用的常量 #55

Open jyzwf opened 6 years ago

jyzwf commented 6 years ago

http://2ality.com/2018/08/enums-via-proxies.html

1.

const keyProxy = new Proxy({}, {
  get(_target, propKey, _receiver) {
    return propKey;
  }
});
const {foo, bar, baz} = keyProxy;

assert.equal(foo, 'foo');
assert.equal(bar, 'bar');
assert.equal(baz, 'baz');

2.

assert.equal(keyProxy.hello, 'hello');
assert.equal(keyProxy.world, 'world');

3.

const keyProxy = new Proxy({}, {
  get(_target, propKey, _receiver) {
    return Symbol(propKey); // (A)
  }
});
const {foo, bar, baz} = keyProxy;

assert.equal(typeof foo, 'symbol');
assert.equal(String(foo), 'Symbol(foo)');