javascript - JavaScript 中的 'a' ['toUpperCase' ]() 如何以及为什么工作?

标签 javascript function

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/

相关文章:

javascript - 将数组 array 打印到选定的对象

javascript - 如何在MouseMove事件上冒泡

javascript - 单击按钮停止启动功能

javascript - 如何构建自定义 extjs4 库来编写这样的代码?

python - 替代append()

mysql - 在 MySQL 函数中打印消息

python - 输入不是字符串或特定长度时的Python函数错误

javascript - 将带有 AJAX 的变量传递给 PHP 以填充下拉菜单时出现问题

javascript - 从函数返回 boolean 值

c# - 编写嵌套方法的正确方法是什么?