Javascript:对此

时间:2017-10-12 00:11:05

标签: javascript this

我正在学习javascript并编写一些简单的控制台(Chrome控制台)应用程序来熟悉它。

我有以下代码:

var john = {
    name: 'John',
    yearOfBirth: 1990,
    calculateAge: function() {
        console.log(this);
        console.log(this.yearOfBirth);

        function innerFunction() {
            console.log(this);
        }

        console.log("inner function called");
        innerFunction();
    }
}

john.calculateAge();

这让我感到惊讶(至少对我而言)输出:

script.js:64 {name: "John", yearOfBirth: 1990, calculateAge: ƒ}
script.js:65 1990
script.js:71 inner function called
script.js:68 Window {frames: Window, postMessage: ƒ, blur: ƒ, focus: ƒ, `close: ƒ, …}`

所以我会想到当innerFunction被调用作为范围内的对象时(那个'这个'指的是)对象John或者函数(它也是javascript中的对象,对吧?)innerFunction。相反,它是全局对象,在本例中为Window。为什么?这里的规则是什么,我没有看到?

我在问这个具体的例子。所以,是的,问题是独一无二的。怎么会这样?这是我的。

0 个答案:

没有答案