JavaScript中this关键字实践

news2024/11/25 18:57:16

● 在全局中, this关键字表示全局窗口

console.log(this);

在这里插入图片描述

● 在严格模式下,this不指向函数本身,在非严格模式下,this指向全局窗口

console.log(this);

const calcAge = function (birthYear) {
  console.log(2037 - birthYear);
  console.log(this);
}

calcAge(1998);

在这里插入图片描述

● 使用箭头函数时,this的值将继承外围函数

const calcageArrow = brithYear => {
  console.log(2037 - brithYear);
  console.log(this);
};

calcageArrow(1980);

在这里插入图片描述

在箭头函数中,this的值是由其定义时所处的上下文决定的,而不是调用时的上下文。箭头函数calcageArrow被定义在全局作用域中,因此它的this值将引用全局对象(在浏览器环境中是window对象)。

● 在对象方法中调用this,this的值是该方法本身的对象

const jonas = {
  year: 1995,
  calcAge: function () {
    console.log(this);
  },
};

jonas.calcAge();

在这里插入图片描述

当然,this的值是对象,所以我们可以用this去计算年龄

const jonas = {
  year: 1995,
  calcAge: function () {
    console.log(this);
    console.log(2038 - this.year);
  },
};

jonas.calcAge();

在这里插入图片描述

● 当使用方法借用的时候,this的值仍然是调用该方法的对象

const jonas = {
  year: 1995,
  calcAge: function () {
    console.log(this);
    console.log(2038 - this.year);
  },
};

jonas.calcAge();

const mark = {
  year: 2017,
};

mark.calcAge = jonas.calcAge;
mark.calcAge();

在这里插入图片描述

在JavaScript中,当一个方法被赋值给另一个对象并作为该对象的方法调用时,方法内部的this值会发生改变。这是因为this的值是在函数被调用时动态确定的,取决于调用该函数的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1206528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Intellij IDEA 内存设置的问题 及解决

解决方案: 在IDEA上运行较大项目时,编译量很大,可能会报出 Error:java: java.lang.OutOfMemoryError: Java heap space 的错误,解决方法如下: java.lang.OutOfMemoryError是内存不足导致的,因此需要修改Id…

主从复制和读写分离

MySQL 主从复制和读写分离: 主从复制:主MySQL上的数据,新增,修改库,表,表里的数据,都会同步到从MySQL上。 MySQL的主从复制的模式:(面试题) 1,异…

【PE】PE文件结构(一)

概述:PE文件结构基础认识之DOS头和PE头(以 rpcrt4.dll 为例分析) 0x01 前言 PE(Portable Executable),即可移植的执行体。 Linux平台:ELF(Executable and Linking Format)文件结构。 Windows平…

新生儿奶瓣:原因、科普和注意事项

引言: 新生儿奶瓣是一种婴儿口腔内的常见现象,它通常被视为正常的生理发展。然而,对于一些新父母而言,了解奶瓣的原因以及如何处理是至关重要的。本文将科普新生儿奶瓣的原因,提供相关信息,并为父母和监护…

YOLOv8-Seg改进:卷积变体系列篇 | DCNv3可形变卷积基于DCNv2优化 | CVPR2023

🚀🚀🚀本文改进:DCNv3算子,基于DCNv2算子引入共享投射权重、多组机制和采样点调制,引入到YOLOv8,与C2f结合实现二次创新; 🚀🚀🚀DCNv3 亲测在多个数据集能够实现涨点,同样适用于小目标分割 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐…

算法的入门基础了解

目录 算法的特征 如何设计算法? 伪代码 “算法”一词最早出现在《周髀算经》这本书中,对应的英文单词是“algorism”(由 9 世纪的波斯数学家阿尔霍瓦里兹米提出),代指阿拉伯数字的运算规则。随着计算机的快速发展&a…

设计大咖亲授:Figma中文环境设置全攻略!

作为UI设计师,你一定很熟悉Figma,Figma是一款专注于UI/UX设计的在线协作工具,使用非常高效方便,不需要下载和安装。它只需要通过浏览器编辑,在国外很受欢迎。但是Figma对于国内的小伙伴来说,使用Figma有一定…

Java面试题(每天10题)-------连载(30)

目录 多线程篇 1、可以运行时kill掉一个线程吗? 2、关于synchronized 3、分布式锁,程序数据库中死锁机制及解决方案 4、spring单例为什么没有安全问题(ThreadLocal) 5、线程池原理 6、Java锁多个对象 7、Java线程如何启动 …

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境OpenCV环境 相关其它博客工程源代码下载其它资料下载 前言 本项目基于从网络获取的多种银行卡数据集,采用OpenCV库的函数进行图像处理,并通过神经网络进行模型训练。最终实…

雅虎、美客多、Temu、Allegro、亚马逊跨境平台选品技巧方法,测评养号攻略。

(1) Best Sellers选品法 这个方法顾名思义,就是大家熟悉的热销榜单选品法。 不做过多解释,在自己熟悉的品类,隔几天就会观察一下前100名里有没有冒出什么新品。 它和现有的产品相同还是不同,自己做哪些搭配或者迭代…

数字农业农村解决方案:PPT全文69页,附下载

关键词:智慧农业解决方案,数字农村,数字农业,智慧农业大数据平台 一、数字农业建设背景 数字农业建设是在国家大数据战略和“互联网”行动计划的指引下,充分利用现代信息技术和人工智能手段,对农业农村领…

ioc是什么

IOC是什么? 在面向对象的软件设计中,底层都是由多个对象耦合组成共同实现逻辑业务的,如下图: 耦合关系不仅会出现在对象与对象之间,也会出现在软件系统的各模块之间,以及软件系统和硬件系统之间。如何降低…

电脑监控软件丨功能详情丨特点分析

电脑监控软件的出现,是在信息技术的飞速发展以及计算机使用的普及的背景下产生的。随着计算机在企业、学校以及家庭等各个场所的广泛使用,管理和保护计算机数据安全的问题变得越来越重要。因此,电脑监控软件应运而生,旨在帮助用户…

企业大楼门禁,千万不要这么管理!太慢了!

随着社会科技的飞速发展,安全管理已经成为各行业关注的焦点之一。在这个信息化时代,门禁监控系统作为一种全面提升安全性、管理效率的关键工具,逐渐成为企事业单位、学校、医疗机构等场所的不可或缺的一部分。 传统的门禁系统已经无法满足现代…

threejs太阳系(源码加相关素材)

目录 前言 效果预览图 完整代码 html部分 js部分 模块aa 前言 Three.js 是一款基于原生 WebGL 封装通用 Web 3D 引擎,在小游戏、产品展示、物联网、数字孪生、智慧城市园区、机械、建筑、全景看房、GIS 等各个领域基本上都有 three.js 的身影。本篇文章简单的使…

开源维修上门服务小程序SAAS系统源码 带完整搭建教程

在现代生活中,家电设备维修往往是一个耗时且繁琐的过程。消费者需要花费大量时间寻找合适的维修人员,并面临服务质量不稳定的风险。同时,对于维修人员来说,寻找客户和接收订单的过程也十分繁琐。因此,开发一款基于小程…

cryptopp Base64Encoder \n问题

1、问题: new Base64Encoder(new StringSink(out_base)) 调用库函数Base64Encoder进行base64加密后确认多出来了\n 2、原因 base64加密的问题, 由于base64一行不能超过76字符, 超过就会添加回车换行符(在Windows中是 \r\n , 在Linux中是 \n ) 3、解决 方法一、给定参…

Python中的filter函数用法详解

目录 引言 一、filter函数基本用法 二、filter函数应用场景 1、筛选符合条件的元素 2、数据清洗和预处理 3、复杂条件筛选 4、与其他函数结合使用 三、filter函数与lambda表达式 四、filter函数与列表推导式 五、总结 引言 Python中的filter函数是一种内置的高效过滤…

电脑桌面图标打不开?三种方法让你轻松应对

电脑桌面上的图标是我们日常使用电脑的入口,但有时候您可能会遇到一个常见问题,电脑桌面图标打不开。这个问题可能会让您感到困惑,但幸运的是,通常有多种方法可以解决。本文将详细介绍三种常见的解决方法,帮助您恢复桌…

测试:面试问题(多精全)

目录 面试问题 1,你们原来项目的测试流程是怎么样的? 2,你介绍下,你最熟悉的项目? 3,你们原来项目的主要的功能模块有哪些,你主要负责哪些模块? 4,你说原来充值…