什么'这'在javascript中的意思

What 'this' means in javascript?

本文关键字:意思 什么 javascript      更新时间:2023-09-26

如果我只是在JavaScript的开头放一个"this",那么它不在任何函数中。"this"与"document"的含义相同吗?或者它的意思是窗户?

示例:

$(this).ajaxComplete(handler);

在这种情况下,我是将处理程序附加到窗口、文档还是其他什么?

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

全局上下文中的this只是引用全局window本身而不是文档。上面的链接有一个很好的例子:

console.log(this.document === document); // true

// In web browsers, the window object is also the global object: console.log(this === window); // true

this.a = 37; console.log(window.a); // 37

我还没有在所有浏览器中测试过这一点,但在Firefox和Chrome中似乎都是如此。

所以这真的取决于代码在哪里。它在$(document).ready()还是$(window).load()中?如果你只是在里面:

$(function(){ });

那么这只是$(document).ready()的不足。所以您将引用该文档。看看:http://learn.jquery.com/using-jquery-core/document-ready/

另外$(this)表示您引用的是当前对象。

如果这是脚本中的唯一一行,那么代码将在全局执行上下文中进行评估。让我们看看规范对它的描述:

10.4.1.1初始全局执行上下文

执行以下步骤初始化ECMAScript代码C的全局执行上下文:

  1. 将VariableEnvironment设置为Global Environment
  2. 将LexicalEnvironment设置为Global Environment
  3. 将ThisBinding设置为全局对象

ThisBindingthis解析的值。因此,在全局上下文中,this指的是全局对象,在浏览器中是window

有关this的更多(不太正式)信息,请查看MDN文档。