是否可以使用正则表达式作为 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)
它说:
计算属性名称:[分配表达式]
- 令exprValue为AssignmentExpression的计算结果。
- 令 propName 为 GetValue(exprValue)。
- ReturnIfAbrupt(propName)。
- 返回ToPropertyKey(propName)。
所以它首先计算名称的值,然后分配给该名称的属性
这是因为 getter 方法只能是属性名称 ( 14.3 ):
方法定义: 获取 PropertyName ( ) { FunctionBody }
属性名称只能是文字属性名称或计算属性名称 ( A2 )
属性名称[产量]:
- LiteralPropertyName
- 计算属性名称
关于javascript - 如何使用泛型表达式作为类 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38813259/