【JavaScript 漫游】【004】数据类型 object

丰收,女孩,牵狗
文章简介

本文为【JavaScript 漫游】专栏的第 004 篇文章,记录 JS 数据类型 object 的重要知识点。

  1. . 运算符和 [] 运算符
  2. Object.keys 方法
  3. delete 命令
  4. in 运算符
  5. for ... in ...

对象概述

JS 的对象是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

var obj = {
  foo: 'hello',
  bar: 'world',
};

: 前的字符串称为键名,: 后的字符串称为键值。如果键名符合标识符的条件,就可以不加引号,否则必须加上引号。

每一个键名,又可以称为属性。属性可以动态创建,不必在对象声明时就指定。

var obj = {};
obj.foo = 123;
obj.foo; // 123

. 运算符和[] 运算符

两种符号都可以用于属性的读取和赋值操作,要注意的是,当属性不符合标识符规范时,必须使用[] 运算符。

var obj = {};
obj.foo = 'hello';
obj['bar'] = 'world';
obj['foo'];  // 'hello'
obj.bar;  // 'world'

Object.keys 方法

用于查看对象本身的所有属性。

var obj = {
  foo: 'hello',
  bar: 'world',
};
Object.keys(obj); // ['foo', 'bar']

delete 命令

用于删除对象本身的某个属性,删除成功返回 true,失败返回 false。

var obj = {
  foo: 'hello',
  bar: 'world',
};
delete obj.foo;
obj.foo;  // undefined

删除一个不存在的属性,delete 命令也不会报错,而且返回 true。只有一种情况会返回 false,那就是该属性存在且不得被删除。

一个属性不得被删除是通过属性描述对象设置的,下文的不可遍历同样如此,专栏中后面的文章会进行描述记载。

in 运算符

用于检查对象是否包含某个属性,如果包含返回 true,否则返回 flase。

var obj = {
  foo: 'hello',
  bar: 'world',
};
'foo' in obj;  // true

in 运算符不能识别哪些属性是对象自身的,哪些是继承的。弥补的方法是使用对象的 hasOwnProperty 方法判断属性是否为对象自身的属性。

var obj = {};
if ('toString' in obj) {
  console.log(obj.hasOwnProperty('toString')) // false
}

for ... in ...

用于遍历对象的所有属性,不论属性是否是对象自身的,还是对象继承的,都会被遍历,只有被设置了不可遍历的属性才不会被遍历到。

var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
  console.log('键名:', i);
  console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm的法律咨询系统(有报告)。Javaee项目,ssm项目。

演示视频: 基于ssm的法律咨询系统(有报告)。Javaee项目,ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Sp…

【百度Apollo】自动驾驶规划技术:实现安全高效的智能驾驶

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

springboot-前后端分离——第二篇

本篇主要介绍一个发送请求的工具—postman,然后对请求中的参数进行介绍,例如简单参数、实体参数、数组参数、集合参数、日期类型参数以及json类型参数,对这些参数接收进行总结。最后对响应数据进行介绍,使用统一响应结果返回浏览器…

MIT6.5830 实验0

前置 本次实验使用 Golang 语言实现,在之前的年份中,都是像 cs186 那样使用 Java 实现。原因: Golang 语言作为现代化语言,简单易上手但功能强大。 使参加实验的同学有同一起跑线,而不是像Java那样,有些同…

增加 CentOS 系统的交换空间/虚拟内存(swap)大小

增加 CentOS 系统的交换空间/虚拟内存(swap)大小 文章目录 增加 CentOS 系统的交换空间/虚拟内存(swap)大小 检查当前交换空间: 在终端中执行以下命令来查看当前的交换空间情况: swapon --show这将显示当…

二级域名分发全解密支持对接易支付

二级域名分发全解密支持对接易支付 先改epay里面的config.php 你的支付域名 然后再改,二级域名分发网站 环境:php74 伪静态: location / { try_files $uri $uri/ /index.php?$query_string; } 源代码:百度网盘 密码:1…

实现注册登录时数据的加密传输(含前后端具体代码)

前言 http/https协议提交在被抓包时请求内容是明文的, 直接传输账号密码的风险非常大,故这里我们要对数据加密处理,并生成校验码,防止数据篡改 Http/https传输账户密码等数据时需要加密处理的原因主要有以下几点: 数据保密性&a…

20240131在WIN10下配置whisper

20240131在WIN10下配置whisper 2024/1/31 18:25 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】800¥ 2、请正确安装好NVIDIA最新的545版本的驱动程序和CUDA。 2、安装Torch 3、配置whisper http…

理解部署描述符的元素

理解部署描述符的元素 部署描述符是文件名为web.xml的XML文件,其包含了Web应用程序的配置信息。每个Web应用程序都有一个web.xml文件。web.xml文件的元素可用于指定servlet的初始化参数、不同文件的MIME类型、侦听器类,以及将URL模式映射到servlet上。一…

【SparkML系列3】特征提取器TF-IDF、Word2Vec和CountVectorizer

本节介绍了用于处理特征的算法,大致可以分为以下几组: 提取(Extraction):从“原始”数据中提取特征。转换(Transformation):缩放、转换或修改特征。选择(Selection&…

【 USRP 相控阵】X波段相控阵开发平台用户指南

包装 一共三件。 1、AD9081-FMCA-EBZ AD9081 MxFE Evaluation Board, https://www.analog.com/eval-ad9081 AD9081 的全功能评估板使用 ACE 软件进行控制的 PC 软件HMC7044 的板载时钟用于管理套件和 FPGA 时钟选择切换到外部直接时钟 AD9081-FMCA-EBZ 评估板包括以各种模…

pinctrl/gpio子系统(1)-pinctrl子系统介绍及驱动源码分析

1.简介 在如今的驱动开发工作中,实际上已经很少去对着寄存器手册进行驱动开发了,一般板子拿到手,已经有原厂的驱动开发工程师,在gpio子系统、pinctrl子系统中将自家芯片的引脚适配好了。 我们直接基于设备树已配置好的寄存器值&a…

基于YOLOv8的工业油污缺陷检测,多种优化方法---自研注意力CPMS基于CBAM优化, mAP@0.5提升近五个点(二)

💡💡💡本文主要内容:详细介绍了工业油污缺陷检测整个过程,从数据集到训练模型到结果可视化分析,以及如何优化提升检测性能。 💡💡💡加入CPMS mAP0.5由原始的0.648提升至0.699 1.工业…

JMeter 下载、安装、启动

JMeter安装部署依赖Java环境,所以首先得安装JDK。 JDK下载JDK环境变量配置 ① 新建系统环境变量JAVA_HOME ② 编辑系统变量Path ③ 新建系统变量CLASSPATH变量 JMeter下载安装 Apache JMeter - Apache JMeter™ JMeter安装部署依赖Java环境,所以首…

如何在 Golang 中使用 crypto/ed25519 进行数字签名和验证

如何在 Golang 中使用 crypto/ed25519 进行数字签名和验证 引言crypto/ed25519 算法简介环境搭建和准备工作生成密钥对进行数字签名 验证签名实际应用场景案例总结 引言 在当今数字化时代,网络安全显得尤为重要。无论是在网上进行交易、签署合同,还是发…

结构体的学习

结构体与共用体,枚举 1.数据类型复习: 2结构体. eg;统计全校同学信息 需要记录的点--- 姓名,班级,性别,成绩,年龄 统计名字:char s[ ] [ 100 ] { "Tmo" } …

01神经网络的理论及实现

感知机的缺点就是需要设置合适的权重,而权重的设置都是人工操作的。 1、从感知机到神经网络 重新画出感知机的模型,在图上加上偏置,由于偏置始终为1,所以颜色加深。 图1-1 感知机模型 引入新函数(激活函数)&#xff…

HTML+CSS:导航栏组件

效果演示 实现了一个导航栏的动画效果&#xff0c;当用户点击导航栏中的某个选项时&#xff0c;对应的选项卡会向左平移&#xff0c;同时一个小圆圈会出现在选项卡的中心&#xff0c;表示当前选项卡的位置。这个效果可以让用户更加清晰地了解当前页面的位置和内容。 Code <…

FFMPEG 之 DXVA2 硬解

一&#xff1a;FFMPEG 支持的硬解方式有很多&#xff1a; DXVA2、D3D11VA、CUDA、QSV、OPENCL、DRM、VAAPI、VDPAU、VIDEOTOOLBOX、MEDIACODEC。 有的支持 Windows 平台&#xff0c;有的支持 linux 平台&#xff0c;有的支持 apple ios 平台&#xff0c;…

【AI视野·今日NLP 自然语言处理论文速览 第七十七期】Mon, 15 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 15 Jan 2024 Totally 57 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Machine Translation Models are Zero-Shot Detectors of Translation Direction Authors Michelle Wastl, Ja…
最新文章