为什么append到父节点后的子节点发生修改,父节点打印出来的也会变化

news2024/11/24 12:54:51

今天走查前端代码,发现历史代码写出来的不规范,但是他还是在生产运行了很久的代码,仔细思量后发现,其实原理是对的,只是看起来不美观,不易读而已。

废话不说,先上demo代码


<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  <title>appendTest</title>

  <script>
    function init(){
      var BatteryCapacityDiv = document.createElement("div");//创建Element对象
      BatteryCapacityDiv.className = 'popTowCol2';//className属性赋值
      var parentNode =  document.getElementById("pano_holder");
      parentNode.appendChild(BatteryCapacityDiv);
      console.log( parentNode)
      BatteryCapacityDiv.appendChild(getSecondHtml());
      console.log( parentNode)
    }
    function getSecondHtml(){
      var batteryCapacity_div = document.createElement("div");
      batteryCapacity_div.className = 'popLine';
      batteryCapacity_div.innerText = "testSecondHtml";
      return batteryCapacity_div;
    }

  </script>
</head>
<body onload="init()">
<div id="pano_holder"></div>
</body>
</html>

怎么样?你觉得init方法里边打印的两个console一样吗?答案是一样的;

来,上图

看出来没,一模一样,怎么理解呢?

实际上需要对象的一些基础知识来解答


1) 实例化 Element 对象BatteryCapacityDiv时 开辟出一块内存空间, 并在内存地址对应的内存中写入数据

2)使 parentNode 指向 BatteryCapacityDiv 对象, parentNode也对应 BatteryCapacityDiv 的内存地址

3)通过BatteryCapacityDiv对象修改值内存中的值改变,但是BatteryCapacityDiv对象、parentNode中的key对应的内存地址并没有改变
因此 parentNode取值改变
 

参考链接:修改对象的值,集合中的值也被改变? 一句话看懂 内存空间 内存地址 与 引用对象_使用java对象池为什么会把之前存到集合中的数据改变呢?-CSDN博客

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

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

相关文章

【Verilog 教程】7.1Verilog 除法器设计

除法器原理&#xff08;定点&#xff09; 和十进制除法类似&#xff0c;计算 27 除以 5 的过程如下所示&#xff1a; 除法运算过程如下&#xff1a; (1) 取被除数的高几位数据&#xff0c;位宽和除数相同&#xff08;实例中是 3bit 数据&#xff09;。 (2) 将被除数高位数据与…

实时选品系统实现的难点

实时选品系统是一个涉及到多个领域的复杂系统&#xff0c;需要兼顾数据挖掘和分析、推荐算法、机器学习、大数据处理等多方面的技术&#xff0c;才能实现高效、准确和可扩展的功能。 以下是实现实时选品系统时可能遇到的难点&#xff1a; 数据量大&#xff1a;实时选品系统需要…

无需公网IP,企业如何访问私有云?

企业的日常办公中已经习惯利用网盘或在线传输服务来进行文件传输和分享&#xff0c;面对一系列层出不穷的数据泄露和黑客行为&#xff0c;企业也越来越担心隐私泄露的问题&#xff0c;并寻找真正存储私有化的解决方案。某企业的总部在北京&#xff0c;在上海还有2处办公室&…

云服务器能干什么?腾讯云服务器的几十种玩法

腾讯云服务器价格很便宜尤其是轻量应用服务器&#xff0c;搞一台云服务器可以用来干嘛&#xff1f;云服务器的用途是很广的&#xff0c;现在轻量应用服务器2核2G3M、2核2G4M、4核8G12M等配置&#xff0c;百元的价格&#xff0c;买一台云服务器后可以做什么&#xff1f;拿来搭建…

PYTHON计算CPK及规范限合格率,绘制直方图概率密度曲线

CPK&#xff08;过程能力指数&#xff09;是一个用于衡量一个过程的稳定性和一致性的统计指标&#xff0c;特别用于制造业和质量管理中。它衡量了一个过程的变异性与规范界限的关系&#xff0c;帮助确定过程是否能够产生合格的产品或服务。 正态分布假设&#xff1a;CPK的计算…

多地智能停车场系统,如何实现数据互联互通?

某公司是从事嵌入式工控车牌自动识别系统、RFID蓝牙远距离读写系列、RFID电子标签系列、智能卡停车场、门禁一卡通智能管理系统、公务车派遣系统、运输车统计系统设备的开发、设计、制造、安装、调试及售后服务的企业。在智能卡停车场系统设备、人员通道闸设备方面有多项国家专…

通过Python脚本+Jekins实现项目重启

文章目录 一、需求二、分析三、实现公共代码单个服务版本1、写死某个服务2、支持服务单选 多服务版本最终实现效果将Python程序转换为桌面可执行文件&#xff08;.exe&#xff09; 一、需求 微服务项目&#xff0c;服务很多&#xff0c;重启服务&#xff0c;基本都是通过Jekin…

【微服务】RedisSearch 使用详解

目录 一、RedisJson介绍 1.1 RedisJson是什么 1.2 RedisJson特点 1.3 RedisJson使用场景 1.3.1 数据结构化存储 1.3.2 实时数据分析 1.3.3 事件存储和分析 1.3.4 文档存储和检索 二、当前使用中的问题 2.1 刚性数据库模式限制了敏捷性 2.2 基于磁盘的文档存储导致瓶…

数学题目大合集 1

文章目录 建议这个题目集适合什么人?小剧场题目集M 题目 1算式法 1法 2M 题目 2算法分解质因数因数个数因数和因数积倒数和答M 题目 3算式解析HM 题目 4算式复习分解(利用“简单”数学)解析总结反馈建议 码字不易,还望关注点赞鼓励! 每个数学题目大合集都有 4 道题,题目…

【计算机网络】你真的懂学校的校园网吗?

【计算机网络】你真的懂学校的校园网吗&#xff1f; 第一步&#xff1a;从了解本机的ip开始 ip地址ip地址的分类公用地址和私有地址 查看本机ip 第二步&#xff1a;向上追溯&#xff0c;查看宿舍的路由器 路由器路由器的两个物理接口路由器用到的协议 分析宿舍路由器WAN口设置 …

linux系统篇(二).之Systemd机制

一、system介绍 systemd配置文件 systemd中这些资源分别代表着不同的单元&#xff08;Unit&#xff09;。systemd 总共有 11 种不同类型的“单元”。单元封装了与系统启动和维护相关的各种对象。systemd通过这些Unit的配置文件&#xff0c;知道怎么启动这些Unit。 提供以下单位…

为什么建议你考一个pmp项目管理证书?

先说一下&#xff0c;不是建议所有人考pmp&#xff0c;毕竟也不是所有人都做项目管理这一行&#xff0c;主要是项目管理人士&#xff08;PMI提出的pmp目标人群&#xff09;&#xff0c;大概如下几类&#xff1a; 项目小白&#xff0c;想进入项目管理行业&#xff0c;可在招聘上…

JDBC和GUI实现图书管理系统

1.介绍 主要通过gui页面实现了与mysql数据库实现交互,跟以前写的图书管理系统相比就是从存在集合中变成了存在数据库中. 下面我来介绍一下主要功能吧: 1.1.通过基本信息添加图书: 1.2.通过ID修改图书 1.3.通过ID查询图书 1.4.通过ID删除图书 2.构建数据库 2.1建库 …

深圳市重点实验室申报要求-华夏泰科

深圳市重点实验室&#xff0c;以开展基础研究、应用基础研究、前沿技术研究&#xff0c;培养人才、支撑产业和社会发展为目标而建立。它为研究人员提供了一个独特的平台&#xff0c;提供了一个展示他们创新性研究的舞台。本文将深入探讨如何申报深圳市重点实验室&#xff0c;为…

VS2022配置Opencv

配置环境变量 配置路径 由于新版本VS属性管理器没有Microsoft.cpp.x64.user文件&#xff0c;可以选择直接在Debug x64进行配置 配置包含目录和库目录 配置链接器

SpringCloud(三)Sentinel、Seata、多级缓存

文章目录 Sentinel雪崩问题Sentinel与Hystrixsentinel使用案例限流规则流控模式流控效果热点参数限流 隔离和降级Feign整合Sentinel线程隔离熔断降级 授权规则与规则持续化自定义异常结果规则管理模式 Seata分布式事务问题理论基础CAP定理BASE理论 Seata架构部署TC服务微服务集…

KylinOSv10系统k8s集群启动mysql5.7占用内存高的问题

问题现象 麒麟系统搭建k8s集群 mysql的pod启动失败 describe查看ommkill&#xff0c;放大limit资源限制到30G依旧启动失败 系统 报错信息 原因 内存占用太高 open_files_limit初始化太高 解决&#xff1a; 1、更换镜像 链接: https://pan.baidu.com/s/1b9uJLcc5Os0uDqD1e…

使用vue-cli创建vue3工程

PS&#xff1a;创建前先查看 vue/cli 版本&#xff0c;确保 vue/cli 版本在4.5.0以上 如果不是4.5.0以上版本&#xff0c;可以通过如下命令进行 安装/升级&#xff1a; npm install -g vue/cli 创建vue3工程步骤如下&#xff1a; 1. 创建项目&#xff1a; ①选择存放项目的…

3DShape2VecSet主题论文集

一、3DShape2VecSet 1、论文信息 2、开源情况&#xff1a;已开源 3DShape2VecSet: A 3D Shape Representation for Neural Fields and Generative Diffusion Modelsg3DShape2VecSet: A 3D Shape Representation for Neural Fields and Generative Diffusion Modelshttps://1z…

车载网络诊断应如何测试?

文章目录 一、前言二、测试内容三、测试设备和台架方案四、测试脚本及工程五、其他一、前言 目前车上主流的网络有CAN、LIN、ETH(以太网)。 按照测试环境可以划分为单件测试,系统测试,整车测试。 我们来看下CAN和以太网的分层图: CAN的分层图: 以太网的分层图: 最好的…