小编典典

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

all

JavaScript 一直让我感到惊讶,这是另一个例子。我刚刚遇到了一些我一开始不理解的代码。所以我调试了它并得出了这个发现:

alert('a'['toUpperCase']());  //alerts 'A'

现在,如果将其定义为字符串类型的成员,这一定很明显toUpperCase(),但最初对我来说没有意义。

反正,

  • 这是因为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

在任何* 对象上调用 任何 方法都是一种通用函数。但这是否意味着指定的方法已经是指定对象的隐式成员? *

我确信我对 JavaScript 函数的基本概念缺乏一些认真的理解。请帮助我理解这一点。


阅读 110

收藏
2022-06-25

共1个答案

小编典典

把它分解。

  • .toUpperCase()是一种方法String.prototype
  • 'a'是一个原始值,但被转换成它的 对象表示
  • 我们有两种可能的符号来访问对象属性/方法,点符号和括号符号

所以

'a'['toUpperCase'];

是通过对属性的 括号表示法toUpperCase访问,从String.prototype. 由于这个属性引用了一个 方法
,我们可以通过附加来调用它()

'a'['toUpperCase']();
2022-06-25