JavaScript continue de me surprendre et c'est un autre exemple. Je viens de tomber sur un code que je n'ai pas compris à la première. Donc j'ai débogué il et venu à cette conclusion:
alert('a'['toUpperCase']()); //alerts 'A'
Maintenant, cela doit être évident, si l' toUpperCase()
est défini comme un membre de type chaîne de caractères, mais il n'a pas de sens pour moi d'abord.
De toute façon,
- cela fonctionne parce que l'
toUpperCase
est un membre de "a"? Ou il y a quelque chose d'autre se passe derrière les coulisses? -
le code que j'ai lu a une fonction, comme suit:
function callMethod(method) { return function (obj) { return obj[method](); //**how can I be sure method will always be a member of obj** } } var caps2 = map(['a', 'b', 'c'], callMethod('toUpperCase')); // ['A','B','C'] // ignoring details of map() function which essentially calls methods on every // element of the array and forms another array of result and returns it
Elle est un peu générique de la fonction à appeler TOUTES les méthodes sur TOUT objet. De là à dire que la méthode spécifiée sera déjà implicite membre de l'objet spécifié?
Je suis sûr que je suis absent de certains graves compréhension du concept de base des fonctions JavaScript. Merci de m'aider à comprendre cela.