js开发:请解释this关键字在JavaScript中的用法。

简介: 【4月更文挑战第23天】JavaScript的this关键字根据执行环境指向不同对象:全局中指向全局对象(如window),普通函数中默认指向全局对象,作为方法调用时指向调用对象;构造函数中指向新实例,箭头函数继承所在上下文的this。可通过call、apply、bind方法显式改变this指向。

在JavaScript中,this关键字是一个特殊的变量,它指向当前执行上下文的对象。在不同的场景下,this的指向会有所不同。

  1. 全局作用域中的this:在全局作用域中,this指向全局对象(在浏览器中是window对象)。
console.log(this); // window
  1. 函数中的this:在普通函数中,this指向全局对象。但是,如果函数被作为某个对象的方法调用,那么this会指向这个对象。
function test() {
   
  console.log(this);
}

test(); // window

var obj = {
   
  test: test
};

obj.test(); // obj
  1. 构造函数中的this:在构造函数中,this指向新创建的实例对象。
function Person(name) {
   
  this.name = name;
}

var person = new Person('Tom');
console.log(person.name); // Tom
  1. 箭头函数中的this:箭头函数没有自己的this,它会捕获其所在上下文的this值。
var obj = {
   
  name: 'Tom',
  sayHello: function() {
   
    setTimeout(() => {
   
      console.log(this.name);
    }, 1000);
  }
};

obj.sayHello(); // Tom
  1. 使用call、apply、bind方法改变this指向:可以使用call、apply、bind方法来改变函数中this的指向。
function test() {
   
  console.log(this);
}

var obj = {
   
  name: 'Tom'
};

test.call(obj); // obj
test.apply(obj); // obj

var newTest = test.bind(obj);
newTest(); // obj
相关文章
|
7天前
|
JavaScript
js中toggleClass用法
js中toggleClass用法
13 1
|
9天前
|
JavaScript 前端开发 NoSQL
使用Node.js进行后端开发入门
【8月更文挑战第10天】恭喜你完成了Node.js后端开发的入门之旅!这只是个开始,Node.js的世界远比这广阔。随着你对Node.js的深入学习和实践,你将能够构建更复杂、更强大的后端应用。不断探索、学习和实践,你将在Node.js的道路上越走越远。
|
11天前
|
JavaScript 前端开发 安全
js中?.、??、??=的用法及使用场景
【8月更文挑战第8天】 js中?.、??、??=的用法及使用场景
39 1
|
19天前
|
SQL 存储 JSON
AlaSQL.js:用SQL解锁JavaScript数据操作的魔法
AlaSQL.js:用SQL解锁JavaScript数据操作的魔法
19 1
|
4天前
|
小程序 JavaScript
|
18天前
|
JavaScript 调度
Three.js开发秘籍:FlyControls的拖拽视角问题解决方案
Three.js开发秘籍:FlyControls的拖拽视角问题解决方案
28 0
|
19天前
|
开发框架 前端开发 JavaScript
循序渐进BootstrapVue,开发公司门户网站(2)--- 使用wow.js动画组件以及自定义的CSS样式处理动态效果
循序渐进BootstrapVue,开发公司门户网站(2)--- 使用wow.js动画组件以及自定义的CSS样式处理动态效果
|
自然语言处理 JavaScript 前端开发
学习javaScript必知必会(2)~js词法分析、介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)
学习javaScript必知必会(2)~js词法分析、介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)
142 0
学习javaScript必知必会(2)~js词法分析、介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)
|
JavaScript 前端开发
Javascript之旅——第七站:说说js的调试
原文:Javascript之旅——第七站:说说js的调试      最近比较吐槽,大家都知道,现在web前端相对几年前来说已经变得很重了,各种js框架,各种面对对象,而且项目多了,就会提取公共模块, 这些模块的UI展示都一样,不一样的就是后台逻辑,举个例子吧,我们做企业差旅的时候,通常都有一个成本中心的js公共模块,客户在预定机票 的时候来填写这个成本中心,而这种成本中心分布在online,offline和app等预定端,这样也是方便后期和客户公司进行月结算。
820 0