前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >JavaScript函数中的this(一)

JavaScript函数中的this(一)

原创
作者头像
堕落飞鸟
发布2023-05-17 11:27:48
发布2023-05-17 11:27:48
60900
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

在JavaScript中,关键字 this 是一个特殊的对象引用,它指向当前执行函数的上下文对象。this的值在函数被调用时确定,并且可能根据函数的调用方式和上下文的不同而变化。this的使用是非常重要的,它允许我们访问和操作当前执行函数所属的对象和环境。

this 的规则

全局上下文中的 this:在全局上下文中,this 指向全局对象(在浏览器环境中通常是 window 对象)。

代码语言:javascript
代码运行次数:0
运行
复制
console.log(this); // 输出全局对象,如 window 对象(在浏览器环境中)

函数中的 this:在函数内部,this 的值取决于函数被调用的方式。

  • 作为函数调用:如果函数作为普通函数调用,this 指向全局对象(在浏览器环境中通常是 window 对象)。
代码语言:javascript
代码运行次数:0
运行
复制
function myFunction() {
  console.log(this);
}

myFunction(); // 输出全局对象,如 window 对象(在浏览器环境中)
  • 作为方法调用:如果函数作为对象的方法调用,this 指向调用该方法的对象。
代码语言:javascript
代码运行次数:0
运行
复制
let obj = {
  name: 'John',
  sayHello: function() {
    console.log('Hello, ' + this.name + '!');
  }
};

obj.sayHello(); // 输出 "Hello, John!"
  • 作为构造函数调用:如果函数作为构造函数使用 new 关键字进行调用,this 指向新创建的对象。
代码语言:javascript
代码运行次数:0
运行
复制
function Person(name) {
  this.name = name;
}

let john = new Person('John');
console.log(john.name); // 输出 "John"
  • 通过 call()apply() 调用:可以使用 call()apply() 方法来显式地设置函数中的 this 值。
代码语言:javascript
代码运行次数:0
运行
复制
function sayHello() {
  console.log('Hello, ' + this.name + '!');
}

let obj = {
  name: 'John'
};

sayHello.call(obj); // 输出 "Hello, John!"

箭头函数中的 this:箭头函数的 this 值是在定义时确定的,它捕获了包含它的函数的 this 值。

代码语言:javascript
代码运行次数:0
运行
复制
let obj = {
  name: 'John',
  sayHello: function() {
    setTimeout(() => {
      console.log('Hello, ' + this.name + '!');
    }, 1000);
  }
};

obj.sayHello(); // 输出 "Hello, John!"(箭头函数捕获了 sayHello() 的 this 值)

this 的使用非常重要,它允许我们访问和操作当前执行函数所属的对象和环境。通过理解 this 的规则和用法,我们可以更好地编写代码并处理不同的执行上下文。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • this 的规则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档