JavaScript一直让我惊讶,这是另一个例子。我只是遇到了一些代码,一开始我不理解。所以我对它进行了调试,得到了这样的发现:
alert('a'['toUpperCase']()); //alerts 'A'
现在,如果toUpperCase()
被定义为string类型的成员,这一定是显而易见的,但最初对我来说没有意义。
不管怎么说,
toUpperCase
是'a'的成员吗?或者在幕后有别的事情在发生?我正在阅读的代码有一个函数如下:
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
在任何对象上调用任何方法是一个泛型函数。但这是否意味着指定的方法已经是指定对象的隐式成员?< / p >
我确信我对JavaScript函数的基本概念缺少一些认真的理解。请帮助我理解这一点。