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

标签 javascript

是否可以使用正则表达式作为 JS 中类的通用 getter 表达式?如果将 test 替换为 "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)

最佳答案

你不能。

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

它说:

计算属性名称:[分配表达式]

  1. exprValue为AssignmentExpression的计算结果。
  2. propName 为 GetValue(exprValue)。
  3. ReturnIfAbrupt(propName)。
  4. 返回ToPropertyKey(propName)。

所以它首先计算名称的值,然后分配给该名称的属性

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

方法定义: 获取 PropertyName ( ) { FunctionBody }

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

属性名称[产量]:

  • LiteralPropertyName
  • 计算属性名称

关于javascript - 如何使用泛型表达式作为类 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38813259/

相关文章:

javascript - 所有图像存储到本地存储后如何调用函数

javascript - $.getJSON() 未加载一致的数据结果

javascript - 我如何使用谷歌脚本下载当前电子表格而无需任何手动干预?

javascript - 使用 javascript 将 List 从 JSON 元素转换为 ArrayList

javascript - 是否可以在发送前更改表单数据?

javascript - HTML 和 JQuery : How to create slideshow of images or text?

javascript - 自定义对象原型(prototype)方法变成数组循环中的索引

javascript - 相当于文本的innerHTML

javascript - 数组修改在 Ractive JS 中不起作用

javascript - 使用 jquery 将属性附加到输入元素