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

当我们编写 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 Thunk 函数的含义和用法实例总结

    JS Thunk 函数实际上是一种特殊的函数,它将一个多参数函数转换成一个只接受回调函数为参数的单参函数。目的是为了让函数的执行结果可以通过回调函数来获取。 使用 Thunk 函数可以有效地处理异步操作,使得回调嵌套不那么深,也更容易进行错误捕捉。以下将详细解释 Thunk 函数的含义和用法实例总结。 1. 概念 1.1 Thunk 函数的定义 Thunk …

    JavaScript 2023年5月27日
    00
  • javascript基本包装类型介绍

    JavaScript 基本包装类型指的是 Boolean、Number 和 String 这三种类型,它们提供了将基本类型值转换为对象的能力。在需要调用方法时,这种类型非常方便。 Boolean Boolean 基本包装类型表示的是布尔值,即 true 和 false。创建 Boolean 对象有两种方式:一种是通过 Boolean 构造函数创建,另一种是使…

    JavaScript 2023年5月19日
    00
  • javascript 两个字符串比较函数

    下面是关于 JavaScript 字符串比较函数的完整攻略。 在 JavaScript 中比较字符串时,有两个比较函数可以使用: localeCompare():用于比较给定字符串与目标字符串的顺序关系,根据本地化规则和当前语言环境来进行比较,支持多种语言。该函数返回一个数字,表示两个字符串的大小关系。 charCodeAt():返回字符串中指定位置的字符的…

    JavaScript 2023年5月28日
    00
  • 原生js实现轮播图的示例代码

    让我们一步步讲解如何使用原生JS实现轮播图。在开始之前,请确保你已经了解了HTML、CSS和基础的JavaScript知识。 1. HTML结构 首先,我们需要在HTML文件中创建我们的轮播图结构。下面是一个基本的例子: <div class="slider"> <div class="slides"…

    JavaScript 2023年6月10日
    00
  • javascript实现点击单选按钮链接转向对应网址的方法

    这里为您讲解一下“javascript实现点击单选按钮链接转向对应网址的方法”的攻略: 1. HTML 结构 首先,需要在 HTML 中添加单选按钮和链接的结构,例如: <input type="radio" name="link" value="https://www.example.com/1&qu…

    JavaScript 2023年6月11日
    00
  • JS 判断代码全收集

    以下是详细讲解“JS 判断代码全收集”的完整攻略,包含了两条示例供您参考。 什么是JS判断代码全收集? 在Web开发中,很多时候需要获取并处理用户输入的数据,从而完成各种功能。但是,有些用户可能会利用特定的手段来绕过你的输入验证,注入恶意代码,从而对你的网站造成威胁。为了防止这样的情况发生,我们需要对用户输入的数据进行全收集。 如何判断代码全收集? 我们可以…

    JavaScript 2023年5月19日
    00
  • ajax动态加载json数据并详细解析

    让我来给大家详细讲解一下“ajax动态加载json数据并详细解析”的完整攻略。 第一步:准备工作 在开始实现“ajax动态加载json数据并详细解析”之前,我们需要做一些准备工作。 首先,我们需要一份json数据作为我们的示例数据。这份数据可以自己手动编写,也可以从一些开放的api接口中获取到。这里,我们以豆瓣Top250电影的api接口为例,获取到如下数据…

    JavaScript 2023年5月27日
    00
  • 优化javascript的执行效率一些方法总结

    优化Javascript的执行效率一些方法总结 Javascript在前端开发中扮演着重要的角色,但是在开发过程中,经常会遇到Javascript代码执行效率较差的情况。以下是优化Javascript执行效率的一些方法总结。 1. 减少DOM操作 DOM操作是非常消耗性能的,每次变更都会让浏览器重新计算一次布局和绘制,因此尽量少的执行DOM操作可以提升代码的…

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