返回

温故而知新,重新认识JavaScript的this

前端

this是JavaScript中一个非常重要的,它代表着当前正在执行的函数中的那个对象。

我们平时使用JavaScript的时候,会经常使用this关键字。比如,当我们在函数中使用this来访问某个属性的时候,这个属性就是当前正在执行的函数所属的对象的属性。

然而,this关键字并不是一个固定的值,它是一个动态的值。它的值会根据当前正在执行的函数的不同而发生变化。

那么,this到底是如何工作的呢?

要想搞清楚这个问题,我们就需要了解JavaScript中的作用域的概念。

作用域是指变量和函数的可见范围。在JavaScript中,作用域分为两种:全局作用域和局部作用域。

全局作用域是指在整个程序中都可以访问的变量和函数。局部作用域是指在某个函数中定义的变量和函数。

当我们在全局作用域中使用this关键字时,this的值就是window对象。

当我们在局部作用域中使用this关键字时,this的值就是当前正在执行的函数所属的对象。

比如,以下代码中,this的值就是window对象:

console.log(this); // window

以下代码中,this的值就是myObject对象:

var myObject = {
  name: "John Doe",
  age: 30,
  sayHello: function() {
    console.log(this.name); // John Doe
  }
};

myObject.sayHello();

我们还可以使用bind()、call()和apply()方法来改变this的值。

bind()方法可以创建一个新的函数,并将this的值绑定到指定的参数。

call()和apply()方法可以立即执行一个函数,并将this的值绑定到指定的参数。

比如,以下代码中,我们将this的值绑定到myObject对象:

var myObject = {
  name: "John Doe",
  age: 30,
  sayHello: function() {
    console.log(this.name); // John Doe
  }
};

var sayHello = myObject.sayHello;

sayHello(); // undefined

sayHello.bind(myObject)(); // John Doe

以上就是JavaScript中this关键字的基本用法。希望你能通过这篇文章对this有一个更加深入的了解。

当然,除了这些基本用法之外,this关键字还有很多其他的用法。比如,this关键字可以用来访问对象的方法和属性,也可以用来创建对象。这些用法比较复杂,这里就不一一介绍了。如果你想了解更多关于this关键字的知识,可以参考相关的书籍或者文章。