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