0
鉴于确定一个类中声明的属性的值使用正则表达式,字符串或其他方法
class MyClass {
constructor() {
this.hello = 'greetings';
}
}
类型,我们如何才能确定是否this.hello
预计将JavaScript的类型之一,例如,String
,Array
,Boolean
,未启动class
?
为了查询的目的,我们不关心程序的实用性,而是关心程序在多大程度上是可行和可验证的。
例如
let c = MyClass.toString().match(/constructor\s\(?.+\)\s\{?\n.+\n.+\}/);
c[0].match(/this\.\w+?\s=?\s.*(?:;)/);
我们可以得到this.hello = 'greeting';
,即下一个步骤来确定'greeting'
预计或将是一个字符串?
利用RegExp
或String
方法达到要求有什么问题?
为明确要求:
鉴于任意JavaScript类,决定在其构造函数中使用的参数的类型。
使用解析器,解析源代码。不要使用正则表达式来做任何事情。 – Tomalak
似乎不是一种可行的方法。例如。 'this.hello ='问候嗨howdy'.split()'意味着'hello'是一个'Array',但为了正确使用,你的正则表达式必须能够解释什么'String.prototype.split'回报。国际海事组织,你将有一个完整的解析器/ AST比正则表达式更好。 –
@Tomalak你可以在答复中发表你的意见和建议吗? – guest271314