class MyClass {
constructor() {
this.hello = 'greetings';
}
}
comment peut-on déterminer si this.hello
devrait être l'un des types JavaScript, par exemple, String
, Array
, Boolean
, sans initialiser le class
? Aux fins de l'enquête, nous ne nous intéressons pas à la praticabilité de la procédure, mais plutôt à la mesure dans laquelle la procédure est possible et vérifiable.
Par exemple
let c = MyClass.toString().match(/constructor\s\(?.+\)\s\{?\n.+\n.+\}/);
c[0].match(/this\.\w+?\s=?\s.*(?:;)/);
nous pouvons obtenir this.hello = 'greeting';
, qui sont les prochaines étapes pour déterminer que 'greeting'
devrait être ou sera une chaîne?
Quels sont les problèmes d'utilisation des méthodes RegExp
ou String
pour répondre aux exigences?
Pour obtenir des précisions exigence:
Compte tenu de toute classe JavaScript arbitraire, déterminer le type des arguments utilisés dans son constructeur.
Utiliser un analyseur, analyser le code source. N'utilisez pas regex pour faire cela. – Tomalak
Ne semble pas être une approche viable. Par exemple. 'this.hello = 'salutations salut howdy'.split()' signifierait que 'hello' est un' Array', mais pour bien faire, votre regex devrait être capable d'interpréter ce 'String.prototype.split' résultats. OMI, vous aurez plus de chance avec un parser/AST complet qu'une regex. –
@Tomalak Pouvez-vous poster vos observations et suggestions à une réponse? – guest271314