最快速的获取元素的方法?快到你想象不到~

news2024/11/29 4:30:22

1、首先我们先准备一个div标签,id定义为box

<div id="box"></div>

2、通常情况下我们会使用原生js获取,如下所示:

let box = document.getElementById("box");
// 或者
let box = document.querySelector("#box");

3、也可以使用jQuery来获取元素

let $box = $("#box");

4、以上方法完全都可以,但是有一个问题就是过于太长了。当我们的元素有id属性的时候,我们可以使用该属性名称世界获取该元素,如下所示:

console.log(box);

5、前提条件是命名的id不能和window上的属性相同,如果相同的话,获取的便还是window的属性,不能获取对应的元素了。

6、既然我们找到了使用方法,那我们就应该去寻找它的原理或者来源。

(1)首先我们来判断以下属性box的来源。全局变量一般都在window这个全局对象上,我们输出一下看看。

console.log(window);

(2)这时候我们发现,box在window的b的出现区域没有,那我们去原型上找。

console.log(window.__proto__);

(3)我们输出原型发现原型上什么也看不到我们想要的东西,这时候直接输出不行的话,那我们就只能用去判断属性和对象是否有包含关系了。写了一个方法,判断属性在原型上还是在对象自身上。

//如果返回true就是在自身上,false则在原型链上
function hasOwnProperty(obj, attr) {
    return (attr in obj) && (obj.hasOwnProperty(attr));
}
console.log(isHasOwnProperty(window,"box"));                                  // false
console.log(isHasOwnProperty(window.__proto__,"box"));                        // false
console.log(isHasOwnProperty(window.__proto__.__proto__,"box"));              // true

(4)我们发现属性并不在window对象上,也不再window对象的原型上,而是在window对象原型的原型上。我们使用Object.getOwnPropertyDescriptor()去看一下属性描述。先补充一下,如果指定的属性存在于对象上,则该方法会返回其属性描述符对象(property descriptor),否则的话就会返回undefined。

let desc = Object.getOwnPropertyDescriptor(window.__proto__.__proto__, 'box');
console.log(desc);

(5)总结:

如果DOM元素的id属性和js内置对象属性或全局变量不重名的话,该名称能从window原型链上(window对象的原型的原型上)进行属性的查找。

缺点大家都了解,容易造成全局污染,不推荐大量使用,尤其是单页面开发,因为你也不知道其他开发伙伴或不会命名类似的变量名。

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

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

相关文章

【Vue中使用Echarts】Echarts的基本配置

文章目录一、Echarts的基础配置二、柱状图表1.原始柱状图2.经过美化的柱状图3.横向柱状图一、Echarts的基础配置 需要了解的主要配置&#xff1a;series xAxis yAxis grid tooltip title legend color 属性作用series系列列表。每个系列通过 type 决定自己的图表类型 大白话&am…

ConvNeXt V2学习笔记

ConvNeXt V2学习笔记 ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders Abstract 在改进的架构和更好的表示学习框架的推动下&#xff0c;视觉识别领域在21世纪20年代初实现了快速现代化和性能提升。例如&#xff0c;以ConvNeXt[52]为代表的现代Co…

目标检测:RCNN、SppNet、Fast RCNN、Faster RCNN是如何过渡的?

目标检测&#xff1a;RCNN、SppNet、Fast RCNN、Faster RCNN、思想总结R-CNN候选框生成Training迁移学习分类与回归候选框R-CNN存在的问题SppNet面临的问题空间金字塔池化特征图映射SppNet存在的问题Fast R-CNNR-CNN与SppNet存在的问题核心思想模型流程ROI Pooling多任务损失的…

力扣刷题记录——326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组的交集 II

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组…

如何搭建邮箱服务器

目录 部署 DNS 黑名单 Mailcow:dockerized 部署 Mailcow:dockerized 为 Mailcow:dockerized 配置 TLS Mailu.io 生成配置文件 部署 Mailu 安全 S/MIME OpenPGP 推荐阅读 搭建邮局服务器的想法之前一直都有&#xff0c;不过一直没有尝试&#xff0c;国庆的时候从阿里…

62. 目标检测 / 物体检测 以及边缘框代码实现

1. 图片分类和目标检测的区别 2. 边缘框 3. 目标检测数据集 目标检测数据集常用的格式&#xff1a;假设是用文本文件来存的话&#xff0c;每一行表示一个物体&#xff0c;分别有文件名、物体类别、边缘框。因为一个图片文件里面可能有多个物体&#xff0c;同一个文件名可能会出…

STC32G 三电感电磁循迹小车

文章目录前言准备工作增量式以及位置式PID电机闭环电磁采样舵机闭环合并效果前言 准备18届的负压电磁&#xff0c;趁现在考试延期赶紧把车子给调了。 现在速度就只能提到1.5m&#xff0c;再往上调就有点打滑了&#xff0c;只能等后面逐飞把负压电机的做出来了之后看能不能让车…

靶机Os-Hax测试笔记

靶机Os-Hax测试笔记 靶机描述 Difficulty : Intermediate Flag : boot-root Learing : exploit | web application Security | Privilege Escalation Contact … https://www.linkedin.com/in/rahulgehlaut/ This works better with VirtualBox rather than VMware 下载…

elasticsearch 7.9.3知识归纳整理(六)之kibana图形化操作es指南

kibana图形化操作es指南 一、创建用户&#xff0c;角色和权限指引 1.创建角色 1.1 在kibana首页点击Manage and Administer the Elastic Stack下的securitys settings 1.2 点击左侧Security 下的roles 1.3 点击右上角的create role 1.4 输入角色名字 完成后点击下面的create…

C++不知算法系列之迷宫问题中的“见山不是山”

1. 前言 迷宫问题是一类常见的问题。 初识此类问题&#xff0c;应该是“见山是山”&#xff0c;理解问题的原始要求&#xff0c;便是查找从起点到终点的可行之路。 有了广泛的知识体系之后&#xff0c;应该是"见山不是山"。会发现迷宫就是邻接矩阵&#xff0c;树和…

CDH6.3.2整合DolphinScheduler3.0.0

注意事项zookeeper版本兼容要查看dolphinscheduler的libs目录下zookeeper的jar包CDH6.3.2DolphinScheduler3.0.0前置条件默认CDH以正确安装并启动至少官方要求的基础环境以正确安装并配置,点击跳转使用mysql需要驱动包 mysql-connector-java-8.0.16.jar,同时所有服务的libs里面…

电力系统电价与温度模型(Matlab代码实现)

目录 1 数学模型 2 运行结果 3 Matlab代码实现 1 数学模型 用于模拟电价的模型是一个简化形式的混合模型&#xff0c;如下图1所示。其根本驱动因素是天然气价格和气温。该模型在内部捕获了驱动因素与电价的关系之间的关系&#xff0c;以及与一天中的时间、一周中的哪一天和…

日常生产用项目一整套DevOps流水线搭建-笔记一(镜像仓库的设置)

写在前边 很多项目新手在接手开发项目的时候,由于缺乏经验,只能通过比较笨的方法去进行项目的部署和开发.这样就会非常非常的麻烦,重复的工作很多很多.我借着一个项目开发的时机,第一次实现了我原先只在想象中的流水线部署.但是由于跟正规公司的项目规模还有差距,我们的流水线…

十六、状态管理——Vuex(3)

本章概要 action 分发 action在组件中分发 action组合 action 16.7 action 在定义mutation 时&#xff0c;一条重要的原则就是 mutation 必须是同步函数。换句话说&#xff0c;在 mutation() 处理器函数中&#xff0c;不能存在异步调用。例如&#xff1a; mutations:{some…

关于前端的学习

最近在网上想模拟一个ai的围棋&#xff0c;然后在gitee上找了一个算法&#xff0c;想要启动一下。https://gitee.com/changjiuxiong/myGoChess?_fromgitee_search使用说明是这样的&#xff1a;使用说明npm installnpm run dev打开index.html可自定义棋盘大小: new Game(19), n…

Polynomial Round 2022 (Div. 1 + Div. 2, Rated, Prizes!)(A~E)

A. Add Plus Minus Sign给出01字符串&#xff0c;在两两之间加入或者-&#xff0c;使得最后得到的结果绝对值最小。思路&#xff1a;统计1的个数&#xff0c;若是奇数个&#xff0c;那最后绝对值一定是1&#xff0c;否则为0&#xff0c;按照最后结果添加或1即可。AC Code&#…

GD32F103-初次接触

前期资料 外形 原理图 参考手册 1.芯片数据手册 2.用户手册 3.固件库使用指南 固件库解析 外设缩写 一些不常见的外设缩写。 BKP 备份寄存器 DBG 调式模块 ENET 以太网控制模块Ethernet EXMC 外部存储器控制 EXTI 外部中断事件控制器 FMC 闪存控制器 GPIO/AFIO 通用…

量化股票池数据怎么分析出来的?

量化股票池数据是怎么分析出来的呢&#xff1f;说到这个需要先来了解股票量化的基本原理&#xff0c;在正常的基础上&#xff0c;不是所有的股票数据都经过一一筛选&#xff0c;而是使用一些分析工具来执行&#xff0c;就像a股自动交易接口系统需要编写相符合条件的策略来执行&…

【MySQL】MySQL存储引擎,索引,锁以及调优

文章目录存储引擎MySQL中的索引MySQL 索引优缺点MySQL 索引类型MySQL索引的实现MySQL中的锁MySQL8.0 新特性MySQL中调优存储引擎 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV等等存储引擎。 通过show engines; 命令查看&#xff0c;如下图 图中…

【目标检测】Mask R-CNN论文解读

目录&#xff1a;Mask R-CNN论文解读一、Mask-RCNN流程二、Mask-RCNN结构2.1 ROI Pooling的问题2.2 ROI Align三、ROI处理架构四、损失函数一、Mask-RCNN流程 Mask R-CNN是一个实例分割&#xff08;Instance segmentation&#xff09;算法&#xff0c;通过增加不同的分支&…