JavaScript 一直让我感到惊讶,这是另一个例子。我刚刚遇到了一些我一开始不理解的代码。所以我调试了它并得出了这个发现:
alert('a'['toUpperCase']()); //alerts 'A'
现在,如果将其定义为字符串类型的成员,这一定很明显toUpperCase(),但最初对我来说没有意义。
toUpperCase()
反正,
toUpperCase
我正在阅读的代码具有以下功能:
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 函数的基本概念缺乏一些认真的理解。请帮助我理解这一点。
把它分解。
.toUpperCase()
String.prototype
'a'
所以
'a'['toUpperCase'];
是通过对属性的 括号表示法toUpperCase访问,从String.prototype. 由于这个属性引用了一个 方法 ,我们可以通过附加来调用它()
()
'a'['toUpperCase']();