JavaScript模式:函数调用的上下文

the*_*Sin 6 javascript function call

我从一开始就有大量的JavaScript函数调用,如下所示:

THING.someFunction.call(THING);
Run Code Online (Sandbox Code Playgroud)

在我看来,应始终相当于:

THING.someFunction();
Run Code Online (Sandbox Code Playgroud)

这两个电话总是相同吗?旧版本的JavaScript怎么样?

在我看来,第二THING行代码的目的是在this内部设置context()someFunction.但是该函数中的上下文应该已经THING默认,对吧?

为了清楚起见,THING定义如下:

var THING = function () {
    // private vars

    return{
        // code
        someFunction : function () {
            // code
        }
    };
}();
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 1

是的,它们是等价的。我不知道有哪个 JavaScript 版本没有它们(不过,call似乎是在 1.3 中添加的)。