JavaScript продолжает удивлять меня, и это еще один пример. Я натолкнулся на какой-то код, который я сначала не понял. Поэтому я отладил его и пришел к этому выводу:
alert('a'['toUpperCase']()); //alerts 'A'
Теперь это должно быть очевидно, если toUpperCase()
определяется как член типа string, но сначала это не имело смысла.
В любом случае,
- Это работает, потому что
toUpperCase
является членом 'a'? Или что-то происходит за кулисами? -
code Я читал функцию следующим образом:
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
Это своего рода общая функция для вызова ЛЮБОГО метода на объекте ЛЮБОЙ. Но означает ли это, что указанный метод уже будет неявным членом указанного объекта?
Я уверен, что мне не хватает какого-либо серьезного понимания базовой концепции функций JavaScript. Пожалуйста, помогите мне понять это.