JavaScript 一直让我感到惊讶,这是另一个例子。我刚刚遇到了一些我一开始不理解的代码。于是我调试了一下,得出了这个发现:
alert('a'['toUpperCase']()); //alerts 'A'
现在,如果 toUpperCase()
被定义为字符串类型的成员,这一定很明显,但最初对我来说没有意义。
不管怎样,
- 因为
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
在 ANY 对象上调用 ANY 方法是一种通用函数。但这是否意味着指定的方法已经是指定对象的隐式成员?
我确信我对 JavaScript 函数的基本概念缺乏一些认真的理解。请帮助我理解这一点。
最佳答案
分解它。
.toUpperCase()
是String.prototype
的方法
'a'
是一个原始值,但会被转换成它的对象表示- 我们有两种可能的符号来访问对象属性/方法,点符号和括号符号
所以
'a'['toUpperCase'];
是通过括号符号对属性toUpperCase
的访问,来自String.prototype
。由于这个属性引用了一个方法,我们可以通过附加()
'a'['toUpperCase']();
关于javascript - JavaScript 中的 'a' ['toUpperCase' ]() 如何以及为什么工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15659809/