iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >javascript的this关键字定义和用法
  • 643
分享到

javascript的this关键字定义和用法

2023-06-02 15:06:31 643人浏览 薄情痞子
摘要

本篇内容介绍了“javascript的this关键字定义和用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!this的定义  表示当前执行代

本篇内容介绍了“javascript的this关键字定义和用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

this的定义

  表示当前执行代码的环境对象

  因此可将this的剖析分为“全局环境”和“函数环境”两种类型的环境对象

  全局环境

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

  vara=10;

  console.log(this.a);//10

  函数环境

  在函数内部,this的取值取决于函数被调用时的运行环境。

  这里涉及到内存里的数据结构相关的知识点,当我们定义以下字面量对象时会发生一系列的关联关系

  varobj={name:'Tom'};

  javascript引擎会先在内存中生成{name:'Tom'}对象,接着再把这个对象的内存地址赋值给obj变量,所以obj变量保存的只是一个内存地址而已,如果要获取obj.name,javascript引擎会先从obj变量中拿到内存地址,然后从该地址中获取原始对象,再返回name属性。

  而属性值为函数时,该函数会被保存在内存中,然后将该内存地址赋值给该属性,因此该地址赋值给不同环境执行时它的作用域是不一样的,而this对象就是指向函数当前的执行环境对象,执行环境是会在EventLoop(事件循环)过程中变化的,因此this在函数环境下是属于运行时的。

  varname='Tom';

  varobj={

  name:'Iceberg',

  say:function(){

  console.log('mynameis'+this.name);

  },

  sub:{

  say:function(){

  console.log('mynameis'+this.name);

  }

  }

  };

  obj.say();//mynameisIceberg

  obj.sub.say()//mynameisundefined;

  varsay=obj.say;

  say();//mynameisTom;

  上面的例子说明obj.say()执行环境为obj对象,而obj.sub.say()的执行环境却是obj.sub对象,而对于obj.sub来说并没有name属性,因此为undefined;而varsay=obj.say;则表示将say方法的内存地址赋值给全局变量,因此从全局变量name中取值。

  运用场景

  接下来从this在函数环境下的不同运用场景来剖析

  事件回调函数

  varhandler={

  nickname:'anonymous',

  reGISter:function(){

  console.log(this.nickname);

  }

  }

  $('#registerBtn').on('click',handler.register);//undefined

  以上逻辑点击触发后输出的是undefined,因为函数被当做事件触发的回调函数执行时,this是指向该触发事件对应的元素,如要this仍然以handler对象为执行环境,则可使用函数的bind方法进行执行环境对象的绑定操作。

  $('#registerBtn').on('click',handler.register.bind(handler));//anonymous

  在React中经常需要在回调函数中调用this.state、this.props,按照上面的分析,将当前环境对象bind到回调函数中即可。

  如果是使用的箭头函数定义回调函数即可无需bind,因为箭头函数中this就是对应定义时所在的对象。

  构造函数

  要理解this在构造函数中的逻辑就要理清楚构造函数在实例化过程中都发生了什么。

  functionA(){

  this.name='Tom';

  this.age=20;

  }

  vara=newA();

  使用new命令实例化构造函数A的过程中会发生以下流程

  创建一个空对象,作为将要返回的对象实例

  将该空对象的原型指向构造函数的prototype属性

  将该空对象赋值给构造函数内部的this关键字

  执行构造函数内部代码

  默认返回this对象(如return的为非对象类型,如数字123,会被忽略进而默认returnthis对象)

  由以上逻辑可知道this关键字在构造函数中表示的是其实例对象。

  bind

  bind方法将函数体中的this指向新对象并返回一个新函数

  functionA(){

https://www.ryw168.com/news/cases/14912.html

  this.nickname='Tom';

  this.say=function(){

  console.log(this.nickname);

  }

  }

  varb={nickname:'John'};

  vara=newA();

  varsay=a.say;

  varsay1=a.say.bind(a);

  varsay2=a.say.bind(b);

  say();//undefined

Https://www.ryw168.com/news/cases/14913.html

  say1();//Tom

  say2();//John

  call&apply

  call方法是指Function.prototype.call,因此每个函数都会具备call方法,fun.call(thisArg,arg1,arg2,...),call方法接收的第一个参数会替换原有的this指向的执行环境对象。

  functionA(){

  this.name='Tom';

  this.sayName=function(){

  console.log(this.name);

  };

  }

  functionB(){

  this.name='John';

  }

  vara=newA();

  a.sayName.call(newB());//John

  而apply方法与call的区别仅在于call接收参数列表而apply接收数组参数或者类数组对象(如函数的arguments对象)。

  总结

  由于javascript的EventLoop原理,决定了执行上下文会不断变化,因此this对象诞生于表达当前的执行环境对象。

“javascript的this关键字定义和用法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: javascript的this关键字定义和用法

本文链接: https://www.lsjlt.com/news/230437.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript的this关键字定义和用法
    本篇内容介绍了“javascript的this关键字定义和用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!this的定义  表示当前执行代...
    99+
    2023-06-02
  • JavaScript关键字this的用法总结
    this 是 JavaScript 中的一个关键字,指向当前的对象,在不同的场合,this 有不同的含义。 全局环境中的this 在全局环境中,this 指向全局对象Global,即...
    99+
    2024-04-02
  • JavaScript中的this关键字用法详解
    目录this的绑定call与apply当方法失去主语的时候,this不再有?不可见的调用总结先举一个生活例子: 小明正在跑步,他看起来很开心 这里的小明是主语,如果没有这个主语,那么...
    99+
    2023-05-19
    JavaScript this关键字 JavaScript 关键字 JavaScript this
  • Java的this关键字用法
    本篇内容主要讲解“Java的this关键字用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的this关键字用法”吧!一、this关键字的作用this关键字除了可以强调本类中的方法还具有...
    99+
    2023-06-20
  • JavaScript的this关键字怎么引用
    这篇“JavaScript的this关键字怎么引用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • javascript中定义方法的关键字是哪个
    这篇文章给大家分享的是有关javascript中定义方法的关键字是哪个的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript有什么特点1、js属于一种解释性脚本语言;2、在绝大多数浏览器的支持下,js...
    99+
    2023-06-15
  • JavaScript中this关键字有什么用
    本篇内容主要讲解“JavaScript中this关键字有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中this关键字有什么用”吧!与...
    99+
    2024-04-02
  • Java类中this关键字与static关键字的用法解析
    目录前言1:修饰属性,表示调用类中的成员变量。2:this修饰方法3:this表示当前对象的引用前言 今天给大家总结介绍一下Java类中this关键字和static关键字的用法。 t...
    99+
    2024-04-02
  • C#的this关键字的2种用法
    在使用C#的过程中,发现this关键是比较少用的,但是在下面这三个场合下是必须要使用的,不使用它是解决不了问题。 第一种场合就是当类成员变量的名称与函数的参数名称一样 比如下面这种情...
    99+
    2024-04-02
  • Java的this和super关键字怎么用
    本文小编为大家详细介绍“Java的this和super关键字怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的this和super关键字怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、“ t...
    99+
    2023-06-30
  • Java关键字之this用法详解
    目录一. this关键字1. 简介2. 作用二. 代码案例1. 代表当前类对象2. 调用类中的属性3. 调用类中的方法4. 调用类的构造方法三. 结语一. this关键字 1. 简介...
    99+
    2023-05-19
    Java this关键字 Java关键字 Java this
  • JavaScript中的this关键字是什么及怎么用
    今天小编给大家分享一下JavaScript中的this关键字是什么及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。例子...
    99+
    2023-06-26
  • Java中的this关键字
    介绍 this关键字用于引用当前实例,在Java语言中,当创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针,这个指针就是“this”。 Java关键字this只能用于方法方法体内,在类...
    99+
    2023-10-20
    java 开发语言
  • java中this关键字的用法是什么
    在Java中,this关键字用于表示当前对象的引用。它可以用于以下几种情况:1. 使用this调用类的构造函数:当一个类中有多个构造...
    99+
    2023-09-15
    java
  • JavaScript this关键词怎么用
    这篇“JavaScript this关键词怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • Java关键字this与super详解用法
    目录一、this 关键字的使用1. 概述2. 作用3. 使用3.1 修饰属性和方法3.2 调用构造器3.3 返回当前对象二、super关键字的使用1. 概述2. 使用3. 使用3.1...
    99+
    2024-04-02
  • Java的方法和this关键字如何理解与应用
    目录步骤 1 、给顾客增加一个吃饭的方法步骤 2 、 没有加static的属性和方法,一定需要先new对象步骤 3 、 用new出来的对象去执行eat方法步骤 4 、 怎么理解c.e...
    99+
    2024-04-02
  • Java this关键字的使用方法有哪些
    这篇文章主要介绍“Java this关键字的使用方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java this关键字的使用方法有哪些”文章能帮助大家解决问题。Boy类...
    99+
    2023-06-26
  • JavaScript的this关键词如何使用
    本篇内容主要讲解“JavaScript的this关键词如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript的this关键词如何使用”吧! ...
    99+
    2024-04-02
  • Java中this和super关键字的使用详解
    目录父类空间优先于子类对象产生super和this的含义super和this的用法继承的特点父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。...
    99+
    2022-11-13
    Java this super关键字 Java this关键字 Java super关键字
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作