this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。
和其他面向对象的语言不同,JavaScript中的this指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的,在上一节讲函数的apply和call方法时已经有过这样的例子。为了方便理解,再来看下面的例子:
以下是引用片段:
<script language="JavaScript" type="text/javascript">
<!--
//创建两个空对象
var obj1=new Object();
var obj2=new Object();
//给两个对象都添加属性p,并分别等于1和2
obj1.p=1;
obj2.p=2;
//给obj1添加方法,用于显示p的值
obj1.getP=function(){ //与这样定义是相同的Object.prototype.getP=function()
alert(this.p); //表面上this指针指向的是obj1
}
//调用obj1的getP方法
obj1.getP();
//使obj2的getP方法等于obj1的getP方法
obj2.getP=obj1.getP;
//调用obj2的getP方法
obj2.getP();
//-->
</script>
从代码的执行结果看,分别弹出对话框显示1和2。由此可见,getP函数仅定义了一次,在不同的场合运行,显示了不同的运行结果,这是有this指针的变化所决定的。在obj1的getP方法中,this就指向了obj1对象,而在obj2的getP方法中,this就指向了obj2对象,并通过this指针引用到了两个对象都具有的属性p。
由此可见,JavaScript中的this指针是一个动态变化的变量,它表明了当前运行该函数的对象。由this指针的性质,也可以更好的理解JavaScript中对象的本质:一个对象就是由一个或多个属性(方法)组成的集合。每个集合元素不是仅能属于一个集合,而是可以动态的属于多个集合。这样,一个方法(集合元素)由谁调用,this指针就指向谁。实际上,前面介绍的apply方法和call方法都是通过强制改变this指针的值来实现的,使this指针指向参数所指定的对象,从而达到将一个对象的方法作为另一个对象的方法运行。
每个对象集合的元素(即属性或方法)也是一个独立的部分,全局函数和作为一个对象方法定义的函数之间没有任何区别,因为可以把全局函数和变量看作为window对象的方法和属性。也可以使用new操作符来操作一个对象的方法来返回一个对象,这样一个对象的方法也就可以定义为类的形式,其中的this指针则会指向新创建的对象。在后面可以看到,这时对象名可以起到一个命名空间的作用,这是使用JavaScript进行面向对象程序设计的一个技巧。例如:
以下是引用片段:
var namespace1=new Object();
namespace1.class1=function(){
//初始化对象的代码
}
var obj1=new namespace1.class1();
这里就可以把namespace1看成一个命名空间。
由于对象属性(方法)的动态变化特性,一个对象的两个属性(方法)之间的互相引用,必须要通过this指针,而其他语言中,this关键字是可以省略的。如上面的例子中:
以下是引用片段:
obj1.getP=function(){
alert(this.p); //表面上this指针指向的是obj1
相关推荐
PostgreSQL+Citus分布式集群实战:从零搭建到性能调优
本文详细介绍了如何从零开始搭建并优化PostgreSQL+Citus分布式数据库集群。内容涵盖集群规划、源码编译安装、Citus扩展部署、节点配置、分布式表创建以及核心性能调优策略,为应对海量数据增长提供了完整的部署指南和实战解决方案。
JS 中指针的用法
JS中指针的用法一览
实战篇(一):从零构建领域知识图谱——基于Protege的本体建模与知识表示
本文详细介绍了如何从零构建领域知识图谱,重点讲解了基于Protege的本体建模与知识表示方法。通过游戏和电影领域的实战案例,展示了类层次结构设计、属性关系定义、推理验证等关键步骤,帮助读者掌握知识图谱构建的核心技术。
js对象都是类似指针引用方式,赋值只需要对变量引用赋值即可改变原对象内容!典型如getAttrObject()返回对象引用,直接修改即可无需set回写;代码设置用户数据会影响当下json序列化结构
一般情况下程序想通过setAttrObject给图元设置用户数据属性变量,是程序运行时需要,只在内存中,但是如果该代码在编辑器编辑状态也会被执行到,那么会导致编辑状态一旦保存图纸,那么会把本来内存中动态设置的数据,被永久序列化到json文件中了!针对第3点,补充一下,图标数据绑定暴露的变量除了在图元节点的json结构属性中体现,也会直接体现到编辑器的属性配置界面上,而setAttrObject设置的用户数据变量在编辑器中无法看到对应的属性配置只有看数据json才能看到!
用STM32F407做个USB声卡:从CubeMX配置到播放录音全功能实战(附源码)
本文详细介绍了如何使用STM32F407开发板实现USB音频设备的全功能实战,包括CubeMX配置、硬件连接、音频流处理和性能优化。通过双缓冲DMA机制和音频数据处理流程,开发者可以构建高质量的USB声卡系统,适用于录音和播放场景。附源码,助力快速上手STM32音频开发。
【OpenClaw企业级智能体实战】第09篇:OpenClaw金融投研实战:17个场景+完整代码,打造专属数字研究员
金融投研面临信息过载、流程重复、数据安全合规三大核心痛点,OpenClaw作为本地部署的新一代AI智能体,凭借“长期记忆+主动执行+数据不出域”的优势,成为券商分析师集体追捧的效率工具。本文基于8家头部券商公开研报,拆解OpenClaw在金融投研的17个核心应用场景(信息处理、研报撰写、量化策略、流程自动化),详解原理、技术选型、实操流程,并提供可直接运行的完整代码与执行结果。文章兼顾新手入门与进阶提升,强调安全隔离部署与幻觉防范,读者可按步骤搭建专属投研智能体,将信息处理、数据整理等重复工作效率提升80%
JavaScript 类、对象、this指针浅析
刚刚接触JavaScript不久,一开始认为它不过是个简单的脚本语言而已,但是在平常或多或少的接触中,对于this指针、全局和局部变量等理解的都不深刻,所以找了些资料看看。 一、类 和实例(对象) 1、类的创建 function class1(){ //类成员的定义及构造函数 } 这里class1既是一个函数也是一个类。可以将它理解为类的构造函数,负责初始化工作。 2、实例的创
Android PMS——概述(一)
PMS(Package Manager Service)是 Android 操作系统的一个重要组件,它负责管理应用程序的包信息以及与应用程序的安装、卸载、权限控制等相关功能,确保应用程序的安全性和稳定性。 Android PMS 负责维护一个应用程序包的清单信息,该清单是一个 XML 文件,包含应用程序的各种元数据,例如应用程序的包名、版本号、权限要求、组件信息等。PMS通过访问该清单文件来获取应用程序的信息。 此外,Android PMS 还负责应用程序的安装和卸载。在安装应用
JavaScript(二)---【js数组、js对象、this指针】
的时候,我们通常也使用“
100天精通Python(爬虫篇)——第119天:基于selenium实现隐藏浏览器指纹特征(反反爬策略)
1. 什么是浏览器指纹? 2. 爬虫隐藏浏览器指纹特征的好处? 3. 手动打开浏览器指纹情况 4. 无界面模式打开浏览器 5. 脚本隐藏浏览器指纹特征
如何通过单步调试的方法,找到 SAP Gateway 到底把 Fiori 应用发送的 OData 请求,投递到哪一台 ABAP 后台服务器了?
这是一个 Count 请求,得到服务器响应的数据是 204,这个 204 会以数字的形式,显示在 Fiori Launchpad tile 上。那如果当前 Gateway 系统可以连接到多台 ABAP 后台服务器,比如下图所示,可以连接 SAP S/4HANA,ERP 或者 SAP CRM,我怎么知道 SAP UI5 应用上显示的数据,到底来自哪一台 ABAP 后台服务器呢?,就是上图 ABAP 调试器里断点停留的位置,即 SAP Frontend 服务器,通过 RFC 将 OData 请求投递给。
java中的this指针_图说js中的this——深入理解javascript中this指针
没搞错吧!js写了那么多年,this还是会搞错!没搞错,javascript就是回搞错!…………在写java的时候,this用错了,idea都会直接报错!比如……但是,js,……idea,爱莫能助了……在面向对象编程里有两个重要的概念:一个是类,一个是实例化的对象,类是一个抽象的概念,用个形象的比喻表述的话,类就像一个模具,而实例化对象就是通过这个模具制造出来的产品,实例化对象才是我们需要的实实在...
Flutter SDK的删除与重装:一步步教你如何轻松搞定
在Flutter开发过程中,我们可能会遇到一些需要重新安装Flutter SDK的情况,例如升级Flutter版本、解决依赖冲突等。本文将详细介绍如何删除并重新安装Flutter SDK,让你轻松应对各种问题。
图说js中的this——深入理解javascript中this指针
没搞错吧!js写了那么多年,this还是会搞错!没搞错,javascript就是回搞错!…………在写java的时候,this用错了,idea都会直接报错!比如……但是,js,……idea,爱莫能助了……在面向对象编程里有两个重要的概念:一个是类,一个是实例化的对象,类是一个抽象的概念,用个形象的比喻表述的话,类就像一个模具,而实例化对象就是通过这个模具制造出来的产品,实例化对象才是我们需要的实实在...
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
简单易懂的JavaScript中的this指针
意思就是,我给你一个function1 ,这个方法是我把function和一个this指向绑定到了一起,从今往后你在任何地方调用function1 ,它的指向永远固定,而回到情境中,function1是this.getName,function也是this.getName,也就是说,我们给this.getName重新赋值了一下。这种情况下,如果我们想要this.name始终为"Alice",就可以使用bind了,bind的意义指定一个this的指定对象,可以在于返回一个始终指向该对象的值。
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
java script this_彻底理解javascript中的this指针
this关键字对于javascript初学者,即便是老手可能都是一个比较容易搞晕的东西。本文试图理顺这个问题。this和自然语言的类比实际上js中的this和我们自然语言中的代词有类似性。比如英语中我们写"John is running fast because heis trying to catch the train"注意上面的代词"he",我们当然可以这样写:"John is runnin...
js的this指针详解
this指针是JavaScript中非常重要但容易引起混淆的概念。本文将详细解释this指针的用法和原理,改变this指向的三个常用的函数方法,帮助读者更好地理解和使用this指针。
详解Javascript 中的this指针
前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象。Javascript可以通过一定的设计模式来实现面向对象的编程,其中this “指针”就是实现面向对象的一个很重要的特性。但是this也是Javascript中一个非常容易理解错,进而用错的特性。特别是对于接触静态语言比较久了的同志来说更是如此。 示例说明 我们先来看一...
JavaScript中的this指针
this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。 和其他面向对象的语言不同,JavaScript中的this指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的,在上一节讲函数的apply和call方法时已经有过这样的例子。为了方便理解,再来看下面的例子:以下是引用片段:<script language="JavaScript" type="text/javascript"> <!--
JavaScript的this指针
this三要素 this的值只有在执行时才能确定。 this的值很大程度上是根据执行上下文来判断的。 在严格模式下,this的值会与非严格模式有所不同。 详细介绍 在全局上下文中 在全局上下文中,this指向全局对象。 在浏览器环境中,this指向浏览器的全局对象,即window。 在node server环境中,this指向node的全局对象,即global。 ...
JavaScript this指针的理解
一.this 指针的理解 借鉴参考http://www.cnblogs.com/kongxy/p/4581223.html this 是 js 的关键字,代表函数运行时,自动生成的一个内部对象。只能在函数内部使用。 this 指针至于函数的执行环境有关与声明环境无关 二.this 指针的四种调用方式 1.方法调用模式 当函数为一个对象属性的时候被称为方法, 当一个方法被调用时 this 绑定到这个对象上。如果被调用表达式有一个提取动作 点或者是[ ] 那么这样的就称之为方法调用模式。 <scri
this指针_深入理解JavaScript的 this 指针
深入理解JavaScript的this指针请注意:::此文章分享的是非严格模式下的this指向问题。 部分情况在严格模式下不通用。hello everybody,我又来了。上一篇文章中,我们讲解了JavaScript 的原型,有兴趣的同学可以通过传送门进入查看,今天我们来聊聊JavaScript中的this。一起探究下这个比较难理解的问题。话不多说,让我们进入正题吧 1.this指针具体是什么...
JavaScript中this指针的理解和指向问题
JS中this指针指向的理解和指向问题
627



被折叠的 条评论
为什么被折叠?



