检测属性

2023-10-27

点上面关注免费学习前端知识!



JavaScript对象可以看做属性的集合,我们经常会检测集合中成员的所属关系——判断某个属性是否存在于某个对象中。可以通过in运算符、hasOwnPreperty()和propertyIsEnumerable()方法来完成这个工作,甚至仅通过属性查询也可以做到这一点。


in运算符的左侧是属性名(字符串),右侧是对象。如果对象的自有属性或继承属性中包含这个属性则返回true:


var o={x:1}

"x"in o;//true:"x"是o的属性

"y"in o;//false:"y"不是o的属性

"toString"in o;//true:o继承toString属性


对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性。对于继承属性它将返回false:


var o={x:1}

o.hasOwnProperty("x");//true:o有一个自有属性x

o.hasOwnProperty("y");//false:o中不存在属性y

o.hasOwnProperty("toString");//false:toString是继承属性


propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到是自有属性且这个属性的可枚举性(enumerable attribute)为true时它才返回true。某些内置属性是不可枚举的。通常由JavaScript代码创建的属性都是可枚举的,除非在ECMAScript 5中使用一个特殊的方法来改变属性的可枚举性,随后会提到:


var o=inherit({y:2});

o.x=1;

o.propertyIsEnumerable("x");//true:o有一个可枚举的自有属性x

o.propertyIsEnumerable("y");//false:y是继承来的

Object.prototype.propertyIsEnumerable("toString");//false:不可枚举


除了使用i n运算符之外,另一种更简便的方法是使用“!==”判断一个属性是否是undefined:


var o={x:1}

o.x!==undefined;//true:o中有属性x

o.y!==undefined;//false:o中没有属性y

o.toString!==undefined;//true:o继承了toString属性


然而有一种场景只能使用in运算符而不能使用上述属性访问的方式。in可以区分不存在的属性和存在但值为undefined的属性。例如下面的代码:


var o={x:undefined}//属性被显式赋值为undefined

o.x!==undefined//false:属性存在,但值为undefined

o.y!==undefined//false:属性不存在

"x"in o//true:属性存在

"y"in o//false:属性不存在

delete o.x;//删除了属性x

"x"in o//false:属性不再存在


注意,上述代码中使用的是“!==”运算符,而不是“!=”。“!==”可以区分undefined和null。有时则不必作这种区分:


//如果o中含有属性x,且x的值不是null或undefined,o.x乘以2.

if(o.x!=null)o.x*=2;//如果o中含有属性x,且x的值不能转换为false,o.x乘以2.

//如果x是undefined、null、false、""、0或NaN,则它保持不变

if(o.x)o.x*=2;


看前端技术文字,就在Web前端精髓

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测属性 的相关文章

  • 一种复杂业务场景的解决方案(代码结构)

    背景 我个人负责交易线的一些服务优化工作 如购物车 预购单等 这些服务是前台服务 需要基于很多中台服务能力来实现业务功能 中台服务如商品中心 协议中心 用户中心 营销活动等 前台服务通过RPC调用中台服务获取数据 在2020年度的优化工作汇
  • 如何做好nodejs服务在服务器上的安全防护?

    Web服务器安全问题仍然是IT部门最关心的问题之一 因为频发的网络攻击已被证明 由于存在托管敏感数据 Web服务器是一个组织中最容易被黑客针对攻击的地方 因此 本篇文章结合nodejs服务对如何提高Web服务器安全性给出了下面几条提示 一
  • 2023蓝桥杯C++A组题解(第十四届)

    今年广东省三中游 按New Oj估分 前5题估分17 第1题 3 4 5题暴力 第2题 B dfs写错了 第7题 G 并查集 多了个以前没见过的要求 找不到思路 面向爆零选手 水平有限 将就着看 有空再补充后5题 目录 吐槽 A 2067
  • Vue全家桶(四)之ES6模块化与webpack打包

    Vue全家桶 Vue全家桶 地址 Vue全家桶 一 之基础指令 https blog csdn net m0 55990909 article details 123917809 Vue全家桶 一 之常用特性 https blog csdn
  • Air32

    Air32 合宙Air001单片机内部FLASH读写示例 代码已经通过测试 开发环境KEIL MDK 5 36 测试代码 void FLASH RdWrTest void uint32 t Address uint32 t PageRead
  • vue + ant design vue 搭配 less 动态自定义主题颜色

    今天搞了一下午 终于搞成功了 分享给大家看看 思路解析 less 提供一个 modifyVars 可以修改浏览器中 less 文件里的变量 所以我们需要在浏览器端引入 less js 需要引入一个 less 文件 其中包含要修改的变量 但是
  • yum install net-tools安装报错could not resolve host: mirrorlist.centos.org

    Could not retrieve mirrorlist http mirrorlist centos org release 7 arch x86 64 repo os infra stock error was 14 curl 6 C
  • 移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台

    移远EC600S CN 使用AT指令HTTP连接GET请求POST请求 并接入OneNET物联网云平台 实现HTTP对物联网设备的接入 同样也适用于 EC200S EC200S不支持QuecPython 体积比EC600S略大 但便宜很多
  • Ubuntu 命令行安装android studio

    安装 sudo apt add repository ppa paolorotolo android studio sudo apt get update sudo apt get install android studio 创建桌面快捷
  • Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享

    Unity 最新UnityWebRequest下载网络资源 支持断点续传 多文件同时下载 同时显示下载进度 和 显示网速 今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https download csdn net downlo
  • 【代码重构 & JDT】遍历AST,获取每个节点的所有直接子节点

    public class DataNode public ASTNode node 所代表的的AST节点 public int label 编号 public List
  • ORB特征提取与匹配

    ORB特征是目前最优秀的特征提取与匹配算法之一 下面具体讲解一下 特征点的检测 图像的特征点可以简单的理解为图像中比较显著显著的点 如轮廓点 较暗区域中的亮点 较亮区域中的暗点等 ORB采用FAST features from accele
  • 【编码】使用JavaScript做中文编码转换

    背景 用git bash跑curl命令的时候 会碰到中文无法输入or无法正常工作的情况 这里介绍先把中文转码 就可以正常使用了 这里介绍JavaScript的方法 1 在url地址上的GET参数是中文时 使用 console log enc
  • Android 13 - Media框架(9)- NuPlayer::Decoder

    这一节我们将了解 NuPlayer Decoder 学习如何将 MediaCodec wrap 成一个强大的 Decoder 这一节会提前讲到 MediaCodec 相关的内容 如果看不大懂可以先跳过此篇 原先觉得 Decoder 部分简单
  • Selenium JSON通信协议

    JSON wire protocol JSONWP 是WebDriver开发者编写的一种通信机制 这个通信协议是一个预定义的特殊设置 通过RESTful API暴露标准端口 WebDriver和JSONWP目的是通过Firefox driv
  • 7-3 成绩等级

    7 3 成绩等级 给出一个成绩 要求输出成绩等级 A B C D E 90分以上为 A 80到89分为 B 70到79分为 C 60到69分为 D 60分以下为 E 输入格式 在一行输入一个整数n n lt 100 输出格式 在一行中输出成
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR添加萤石云设备详细操作来啦!

    安防视频监控 视频集中存储 云存储 磁盘阵列EasyCVR平台可拓展性强 视频能力灵活 部署轻快 可支持的主流标准协议有国标GB28181 RTSP Onvif RTMP等 以及支持厂家私有协议与SDK接入 包括海康Ehome 海大宇等设备
  • QT With OpenGL(延时着色法)(Deferred Shading)

    文章目录 1 创建G Buffer帧缓存 2 修改各类型物体的着色器 3 测试G Buffer 4 使用G Buffer生成场景 5 添加高光项 1 如果为光源物体 则不进行光照结果计算 2 对高光项进行高斯模糊 3 泛光合成 更多 光体积
  • 蓝桥杯505--数字三角形

    题目描述 上图给出了一个数字三角形 从三角形的顶部到底部有很多条不同的路径 对于每条路径 把路径上面的数加起来可以得到一个和 你的任务就是找到最大的和 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数 此外 向左
  • 【数据库课程设计】企业库存管理系统

    作者 何翔 学院 计算机学院 学号 04191315 班级 软件1903 完整资料 https download csdn net download HXBest 72361220

随机推荐

  • 开发板连续显示图片

    本文分享自中移OneOS微信公众号 万耦中的二次元世界 作者 小M哥 BAD APPLE原本是东方游戏里的一首歌曲 后来被加了一个MAD 由于MAD非常惊艳华丽 使得BAD APPLE被大家喜爱 在程序员圈子里 有一个传言 有屏幕的地方 就
  • 性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

    前言 性能测试基础 1 性能测试一般分为 负载测试 压力测试 基准测试 稳定性测试 扩展性测试 2 常见的性能测试指标 响应时间 TPS QPS 并发用户 PV UV 点击率 吞吐量 资源开销 3 性能测试的场景 业务场景 系统的业务处理流
  • windows添加开机启动项

    我们时常会需要开机就启动一些软件 例如飞鸽 微信等等 windows添加开机启动项有很多种 例如 添加到 启动 文件夹 添加到注册表 使用任务计划程序 以下只列举第一种 添加到启动文件夹 测试环境为Win 10 解决方案 1 按下 Win
  • python中判断类型函数isinstance()

    函数isinstance 可以判断一个变量的类型 既可以用在Python内置的数据类型如str list dict 也可以用在我们自定义的类 它们本质上都是数据类型 假设有如下的 Person Man和 Woman的定义及继承关系如下 cl
  • gradle 任务依赖实现复制任务。

    近期遇到一个需求 由于很少研究gradle相关 所以在实现上卡了一阵子 现已基本实现需求 回过头来记录一下 需求 项目中接入腾讯bugly 使用其热更新功能 由于热更新目前不支持自定义补丁包的生成路径 因此会产生一个问题就是 补丁包生成后位
  • HarmonyOS开发:走进静态共享包的依赖与使用

    前言 在上一篇 我们进行了动态共享包的开发和使用 由于动态共享包有一定的局限性 比如 调用共享包资源还得要通过工具类进行调用 再比如仅用于应用内部代码 资源的共享 如果我想要开源 以远程依赖的方式给任何一个想要用的人进行使用 动态共享包就无
  • 阿里开源的缓存框架JetCache

    之前一直在用Spring Cache进行接口数据的缓存 主要是Spring Cache在对具体key缓存失效时间的设置不是很方法 还要自己去扩展 无意中发现了阿里的JetCache 大部分的需求都能满足 并且有一些很实用的功能 今天给大家介
  • activate : 无法将“activate”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1

    在pycharm里面错误展示 无法激活虚拟环境 解决方法 以管理员身份运行 PowerShell 并输入 set executionpolicy remotesigned 再输入 y 如图 输入完后重新打开pycharm 再次输入 acti
  • SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置

    目录 方式一 放在与Mapper接口同级目录 方式二 在resources创建Mapper接口同名文件夹用来存放Mapper xml文件 方式三 在resources目录下创建mapper文件夹存放mapper xml 推荐 方式一 放在与
  • git 签出(恢复)指定文件

    在项目开发中 偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件 此篇文章将介绍如何通过git从历史提交记录 分支记录恢复指定文件 1 git checkout 说明 使用git checkout除了可以切换分支外 还可以签出指定文
  • Elasticsearch Java High Level REST Client(Exists API)

    Exists API 如果文档存在 则existsAPI返回true 否则返回false Exists请求 它就像Get API一样使用GetRequest 支持所有可选参数 由于exists 只返回true或false 我们建议关闭获取
  • 目标检测之Yolov3与Anchor-Free

    原文 目标检测之RCNN Yolo SSD RetinaNet与Anchor Free dagongji10的博客 CSDN博客 2 2 Yolo v3 2018 Yolo v3 论文比 Yolo v2 还要随意 具体优化内容主要有 bbo
  • 用python绘制曼彻斯特编码等八种常见数据编码方式的波形图

    用python绘制八种数据编码方式的波形图 2020春季北京航空航天大学计算机学院物联网引论课程作业 介绍八种常见数据编码方式并实践画出波形图 本文使用了python中的二维图像模块matplotlib 博主在信号与通信原理方面功底不深 如
  • deepin的踩坑问题与解决方案,以及使用分享(持续更新)

    笔者目前的电脑环境是Redmibook 14 AMD的锐龙版 R5 3700U 只有集成显卡 不同换环境下问题原因不一定相同 如驱动等兼容性问题 可以借鉴解决思路 但更多问题还是具有共性 Q1 u盘安装的时候 卡在蓝色背景图 无安装程序启动
  • e3 服务器虚拟机,e3 虚拟机

    e3 虚拟机 内容精选 换一换 Hypervisor能实现同一物理机上不同虚拟机之间的资源隔离 避免虚拟机之间的数据窃取或恶意攻击 保证虚拟机的资源使用不受周边虚拟机的影响 用户使用虚拟机时 仅能访问属于自己的虚拟机的资源 如硬件 软件和数
  • 【Ethernet】以太网卡LAN8720A分析和使用

    文章目录 1 LAN8720A简介 2 PHYAD 0 PHY地址配置 3 MODE 2 0 Mode配置 4 nINTSEL nINT REFCLKO配置 5 REGOFF 配置内部 1 2V电压源 6 SMI MDC MDIO 总线接口
  • android studio jdk se 8,java - Is JDK 1.8 fully supported by Android Studio? - Stack Overflow

    Actually you get all sorts of crazy Gradle errors when trying to build Android Studio projects with Java 8 like 2016 04
  • C++避坑——most vexing parse问题

    1 坑 的问题是什么 先看一段代码 class Functor public void operator std cout lt lt 我是线程的初始函数 lt lt std endl int main std thread t Funct
  • 第六章:认识Java的API-使用Java函数库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第六章 认识Java的API 使用Java函数库 Java内置有数百个类 如果你知道如何从统称Java API的Java的函数库中查找所需功能 那就不用再造轮子了 核
  • 检测属性

    点上面关注免费学习前端知识 JavaScript对象可以看做属性的集合 我们经常会检测集合中成员的所属关系 判断某个属性是否存在于某个对象中 可以通过in运算符 hasOwnPreperty 和propertyIsEnumerable 方法