Javascript 如何使用泛型表达式作为类getter

Javascript 如何使用泛型表达式作为类getter,javascript,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

在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)
你不能

它说:

ComputedPropertyName:[AssignmentExpression]

  • 让exprValue作为赋值表达式求值的结果
  • 让propName为GetValue(exprValue)
  • ReturnIfAbrupt(propName)
  • 返回TopPropertyKey(propName)
  • 因此,它首先计算名称的值,然后将该名称指定给属性

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

    方法定义: getPropertyName(){FunctionBody}

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

    PropertyName[收益]:

    • 文字属性名称
    • ComputedPropertyName

    从我阅读的文档中看,您似乎无法做到这一点-我看不到有效的用法case@Jaromande您可以根据以下公式使用表达式:表达式不是正则表达式Expression@JaromandaX我想那只是想知道是否有办法做到这一点。请随意回答:“不,不可能”,如果不可能;)@JaromandaX一个有效用例的例子是创建一个可以用array[i,j]索引的定制2D数组类。不过,允许通用正则表达式是相当极端的。