为什么“this”里面的函数返回对象窗口

时间:2014-03-06 06:55:17

标签: javascript function this

javascript中有两种类型的作用域 功能范围 全球范围

现在我正在执行此代码

function abc()
{
alert(this);
}
abc();

abc调用返回我[对象窗口] 为什么??函数创建另一个范围,以便它代表窗口

3 个答案:

答案 0 :(得分:7)

在任何函数内部,

this将是调用该函数的对象。在您的情况下,您不是在任何对象上调用它。因此,默认情况下this引用global对象,在浏览器中,它是window对象。

但在strict模式下,如果您这样调用它,this将为undefined

"use strict";
function abc() {
    console.log(this);    // undefined
}
abc();

或者

function abc() {
    "use strict";
    console.log(this);   // undefined
}
abc();

答案 1 :(得分:1)

您的功能位于全局(窗口)对象下。我的意思是,

function abc()
{
    alert(this);
}
abc(); 
// or You can either call by
window.abc()

您可以在自定义对象

下编写函数
// Function under custom object
var customObj = {
    abc : function () {
        alert(this);
    }
};
customObj.abc()

答案 2 :(得分:0)

this关键字是指函数所属的对象,如果函数属于无对象,则为窗口对象。

<强>参考

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this