欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > JavaScript this 关键词

JavaScript this 关键词

2025/5/6 21:47:48 来源:https://blog.csdn.net/2301_78133614/article/details/141347587  浏览:    关键词:JavaScript this 关键词

实例

<!DOCTYPE html>
<html lang="en"><body><p id="demo"></p><script>var person = {firstName: "rose",lastName: "li",id: 888,fullName: function () {return this.firstName + "" + this.lastName;}};document.getElementById("demo").innerHTML = person.fullName();</script>
</body></html>
//roseli

this 是什么?

JavaScript this 关键词指的是它所属的对象。

它拥有不同的值,具体取决于它的使用位置:

  • 在方法中,this 指的是所有者对象。
  • 单独的情况下,this 指的是全局对象。
  • 在函数中,this 指的是全局对象。
  • 在函数中,严格模式下,this 是 undefined。
  • 在事件中,this 指的是接收事件的元素。

call()apply() 这样的方法可以将 this 引用到任何对象。

方法中的 this

在对象方法中,this 指的是此方法的“拥有者”。

在本页最上面的例子中,this 指的是 person 对象。

person 对象是 fullName 方法的拥有者。

<!DOCTYPE html>
<html lang="en"><body><p id="demo"></p><script>var person = {firstName: "rose",lastName: "li",id: 888,fullName: function () {return this.firstName + "" + this.lastName;}};document.getElementById("demo").innerHTML = person.fullName();</script>
</body></html>
//roseli

单独的 this

在单独使用时,拥有者是全局对象,因此 this 指的是全局对象。

在浏览器窗口中,全局对象是 [object Window]

<!DOCTYPE html>
<html lang="en"><body><p id="demo"></p><script>var x = this;document.getElementById("demo").innerHTML = x;</script>
</body></html>
//[object Window]

在严格模式中,如果单独使用,那么 this 指的是全局对象 [object Window]

实例

"use strict";
var x = this;

函数中的 this(默认)

在 JavaScript 函数中,函数的拥有者默认绑定 this

因此,在函数中,this 指的是全局对象 [object Window]

实例

<!DOCTYPE html>
<html lang="en"><body><p id="demo"></p><script>document.getElementById("demo").innerHTML = myFunction();function myFunction() {return this;}</script>
</body></html>
//[object Window]

函数中的 this(严格模式)

JavaScript 严格模式不允许默认绑定。

因此,在函数中使用时,在严格模式下,this 是未定义的(undefined)。

实例

<!DOCTYPE html>
<html lang="en"><body><p id="demo"></p><script>"use strict";document.getElementById("demo").innerHTML = myFunction();function myFunction() {return this;}</script>
</body></html>
//undefined

事件处理程序中的 this

在 HTML 事件处理程序中,this 指的是接收此事件的 HTML 元素:

实例

<!DOCTYPE html>
<html><body><h1>JavaScript <b>this</b> 关键词</h1><button onclick="this.style.display='none'">单击来删除我!</button></body></html>

对象方法绑定

在此例中,this 是 person 对象(person 对象是该函数的“拥有者”):

实例

<!DOCTYPE html>
<html><body><p id="demo"></p><script>// 创建对象:var person = {firstName: "Bill",lastName: "Gates",id: 678,myFunction: function () {return this;}};// 显示来自对象的数据:document.getElementById("demo").innerHTML = person.myFunction();</script></body></html>
//[object Object]
<!DOCTYPE html>
<html><body><p id="demo"></p><script>// 创建对象:var person = {firstName: "Bill",lastName: "Gates",id: 678,fullName: function () {return this.firstName + " " + this.lastName;}};// 显示来自对象的数据:document.getElementById("demo").innerHTML = person.fullName();</script></body></html>
//Bill Gates

换句话说,this.firstName 意味着 this(person)对象的 firstName 属性。

显式函数绑定

call()apply() 方法是预定义的 JavaScript 方法。

它们都可以用于将另一个对象作为参数调用对象方法。

您可以在本教程后面阅读有关 call()apply() 的更多内容。

在下面的例子中,当使用 person2 作为参数调用 person1.fullName 时,this 将引用 person2,即使它是 person1 的方法

<!DOCTYPE html>
<html><body><p id="demo"></p><script>var person1 = {fullName: function () {return this.firstName + " " + this.lastName;}}var person2 = {firstName: "rose",lastName: "chen",}var x = person1.fullName.call(person2);document.getElementById("demo").innerHTML = x;</script></body></html>
//rose chen

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词