JavaScript 函数中的 this
什么是this?
在 JavaScript 中,this关键字指的是一个对象。
this关键字指的是不同的对象,具体取决于它的使用方式:
单独使用时,this 指的是全局对象。 |
在函数中,this 指的是全局对象。 |
在函数中,如果处于严格模式,this 的值为undefined。 |
在对象方法中,this 指的是 对象。 |
在事件中,this 指的是接收该事件的 元素。 |
像 call()、apply() 和 bind() 这样的方法可以将 this 引用给 任何对象。 |
注意
this 不是一个变量。
this 是一个关键字。
您无法更改 this 的值。
this 单独使用
单独使用时,this 指的是全局对象。
因为 this 位于全局作用域中。
在浏览器窗口中,全局对象是 [object Window]:
在严格模式下,单独使用时,this也指全局对象:
this 在函数中(默认)
在函数中,默认情况下,this 是全局对象。
在浏览器窗口中,全局对象是[object Window]:
this 在函数中(严格模式)
JavaScript 严格模式 不允许默认绑定。
在严格模式下,当在函数中使用 this 时,undefined。
this 在事件处理程序中
在 HTML 事件处理程序中,this 指的是接收到事件的 HTML 元素:
this 优先级
使用以下优先级顺序来确定 this 指的是哪个对象:
| 顺序 | 对象 | 因为 |
|---|---|---|
| 1 | bind() | this 位于一个使用 bind() 调用的函数中 |
| 2 | apply() | this 位于一个使用 apply() 调用的函数中 |
| 2 | call() | this 位于一个使用 call() 调用的函数中 |
| 3 | 对象方法 | this 位于对象函数(方法)中 |
| 4 | 全局作用域 | this 位于全局作用域的函数中 |
