JavaScript中的this关键字使用方法总结

yizhihongxing

当我们编写 JavaScript 代码时,经常需要访问当前函数上下文中的数据。为了做到这一点,JavaScript 提供了一个关键字 thisthis 关键字表示当前函数所在的对象,它包含了当前函数执行时所依存的上下文信息。在 JavaScript 中,this 关键字的使用非常重要,学会正确地使用 this 关键字对于编写高质量的代码非常重要。

下面是 "JavaScript中的this关键字使用方法总结 "的完整攻略:

1. this 是什么

this 关键字代表当前函数执行时所依存的“上下文对象”。它指向与函数相关的对象,在本质上就是一个变量(一个专有的关键字)。在不同的情况下,this 关键字会有不同的值。在 JavaScript 中,this 关键字在声明时并不赋值,而是在函数被调用时根据执行环境确定的。

2. this 的指向

this 的指向主要取决于函数的执行方式和函数的定义位置。通常情况下,它有四种指向方式,分别是:

  • 全局对象(指 window 或者 global
  • 普通函数调用中 this 指向全局对象
  • 对象的方法调用中 this 指向其对象
  • 构造函数调用中,this 指向新创建的对象,即 new 关键字

下面分别进行例子演示。

例1

当函数独立调用的时候,this 关键字指向全局对象(在浏览器中就是 window 对象)。

// global scope
console.log(this === window); // true

// function scope
function myFunction() {
  console.log(this === window); // true
}

myFunction();

例2

当函数作为对象的方法调用时,this 关键字指向这个对象。

const person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function () {
    console.log(this.firstName + " " + this.lastName);
    // this here points to the person object
    console.log(this === person);
  },
};

person.fullName(); // John Doe true

3. 如何显式地传递 this

对于需要访问和修改某个特定对象的函数来说,属性访问器中的 this 上下文可能是有用的。通过使用 call(), apply()bind() 方法,我们可以手动地设置 this 的值,以获得更好的控制和更大的灵活性。

例3

使用 call() 方法来设置 this :

const person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

const person2 = {
  firstName:"John",
  lastName: "Doe",
};

// call the fullName method in the person1 object, but with person2 as the 'this'
console.log(person1.fullName.call(person2)); // John Doe

例4

使用 bind() 方法来设置 this :

const person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

const person2 = {
  firstName:"John",
  lastName: "Doe",
};

const person2FullName = person1.fullName.bind(person2);
console.log(person2FullName()); // John Doe

4. 总结

this 是 JavaScript 中非常重要的一个关键字,它在函数调用时可以指向不同的对象,掌握 this 并且使用它可以让你编写高质量的 JavaScript 代码。注意函数的调用方式和定义位置非常重要,以及通过 call(), apply()bind() 这三种方法可以手动设置 this 的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中的this关键字使用方法总结 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • JS 中的 Event Loop 是什么你真的懂

    当我们在编写 JS 代码时,通常会遇到异步事件和回调函数等情况。在这种情况下,我们就需要了解 JS 中的 Event Loop。简单来说,Event Loop 是 JS 异步编程的核心机制,它使我们能够并行执行多个事件而不会导致程序出错。 以下是详细的攻略: 1. Event Loop 是什么? Event Loop 是一个不断运行的进程,用于检查消息队列并…

    JavaScript 2023年6月11日
    00
  • Javascript MIN_VALUE 属性

    以下是关于JavaScript MIN_VALUE属性的完整攻略。 JavaScript MIN_VALUE属性 JavaScript MIN_VALUE属性是Number对象的一个属性,它表示JavaScript中最小的正数,约为5E-324。MIN_VALUE属性是一个常量,它不能被修改。 下面是一个使用MIN_VALUE属性的示例: console.l…

    JavaScript 2023年5月11日
    00
  • JS获取当前时间戳与时间戳转日期时间格式问题

    获取当前时间戳是JavaScript中一项基本操作,而将时间戳转化为日期时间格式也是开发过程中常用功能。本文将详细讲述这两个问题的解决方案。 获取当前时间戳 在JavaScript中获取当前的时间戳,我们可以使用Date对象的getTime()方法获取,该方法会返回从标准时间1970年1月1日 00:00:00 UTC到当前时间的毫秒数。 const tim…

    JavaScript 2023年5月27日
    00
  • JavaScript中的Window窗口对象

    关于 JavaScript 中的 Window 窗口对象,我将为您提供完整的攻略。 Window 窗口对象是什么? Window 窗口对象是 Web 浏览器或浏览器窗口的根对象。它代表一个浏览器窗口或一个 HTML 框架。 所有在浏览器窗口或框架中展示的内容都是在 Window 对象中进行操作的。Window 对象提供了许多方法和属性来管理浏览器窗口或框架,…

    JavaScript 2023年6月11日
    00
  • iView UI FORM 动态添加表单项校验规则写法实例

    iView UI是一个基于Vue.js的UI组件库,提供了众多的组件和功能,其中FORM组件是表单组件,可以方便的实现表单的校验和提交。 当需要动态添加表单项时,需要动态绑定表单项的校验规则。下面是iView UI FORM动态添加表单项校验规则的完整攻略: 步骤一:引入iView UI组件库 import Vue from ‘vue’ import iVi…

    JavaScript 2023年6月10日
    00
  • javascript实现全角转半角的方法

    javascript可以通过正则表达式实现全角转半角。具体实现步骤如下: Step 1: 获取文本 首先,我们需要获取需要转换的文本,可以通过 getElementById() 等方法获取到HTML中的文本。 const originText = document.getElementById(‘text’).innerHTML; Step 2: 利用正则表…

    JavaScript 2023年5月19日
    00
  • Jsonp post 跨域方案

    下面我将详细讲解 Jsonp post 跨域方案的完整攻略。 什么是 Jsonp post 跨域方案? 在前端开发中,常常会遇到需要跨越多个域名进行数据交互的问题,而出于安全考虑,浏览器出于安全策略的限制,不允许通过 ajax 请求访问跨域资源,这时可以采用 Jsonp post 跨域方案来实现数据交互。 Jsonp 是一种通过动态创建 script 标签跨…

    JavaScript 2023年5月27日
    00
  • js实现公告自动滚动

    当我们在网站中需要展示一些公告信息时,如果公告内容比较多,可以通过实现公告自动滚动来达到更好的展示效果。下面是 JS 实现公告自动滚动的完整攻略。 步骤 1. 准备 HTML 结构 首先需要在 HTML 中定义公告的容器和公告内容的列表,如下所示: <div class="notice"> <ul> <li&…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部