为什么“this”是这个JavaScript中的Window对象

Why is `this` the Window object in this JavaScript?

本文关键字:JavaScript 中的 Window 对象 this 为什么      更新时间:2023-09-26

在这里做了一个完整的噩梦,努力向自己解释为什么thiswindow对象?

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

我的理解是函数在JS中创建范围,为什么这指的是window对象?

因为这是

JavaScript的工作方式,除非严格模式。

this window,除非您在其他对象上显式调用方法。您发布的代码get在没有显式this的情况下被调用,因此在 window 上调用。

x.method() // "this" will be "x"
method() // "this" will be "window"

在 Javascript 中确定this的规则

按优先级顺序:

  • 该函数用new调用,例如 var a = new method() ,导致this成为一个新的空对象。
  • 该函数使用特定的上下文显式调用,使用callapplybind,导致this成为所使用的上下文(例如method.call(y)会导致thisy
  • 函数由对象调用,导致函数的上下文成为调用对象(例如 x.method()会导致thisx(
  • 在非严格模式下,如果不满足其他任何规则,则this默认为全局对象。 在严格模式下,this将是未定义的。