如何将泛型表达式用作类getter

时间:2016-08-07 10:36:37

标签: javascript

是否可以使用正则表达式作为JS中类的通用getter表达式?如果测试被"bar"替换,则工作正常。

如果没有,是否有其他方法可以为类创建通用的getter?

var test = /^(?!foo).*$/;

var Foo = class {
   get foo() {
      return 'foo!';
   }
   get [test]() {
      return 'the called getter was ' + this.expr;
   }
}

var f = new Foo();

console.log(f.bar)

1 个答案:

答案 0 :(得分:1)

你不能。

Chapter 12.2.6.8 of ECMAScript 2015 (6th Edition, ECMA-262)

它说:

ComputedPropertyName :[ AssignmentExpression ]

  1. exprValue 成为评估AssignmentExpression的结果。
  2. propName 为GetValue( exprValue )。
  3. ReturnIfAbrupt( PROPNAME )。
  4. 返回ToPropertyKey( propName )。
  5. 因此,它首先计算名称的值,然后将其分配给名称为

    的属性

    这是因为getter方法只能是属性名称(14.3):

    MethodDefinition 获取 PropertyName (){FunctionBody}

    属性名称只能是文字属性名称或计算属性名称(A2

    PropertyName [收益率]:

    • LiteralPropertyName
    • ComputedPropertyName
相关问题