当前位置: 首页 > news >正文

14-JavaScript中的点操作符与方括号操作符

JavaScript中的点操作符与方括号操作符:简单理解与应用

笔记+分享
在JavaScript中,访问对象的属性有两种常见方式:点操作符(.)和方括号操作符([])。尽管它们在很多情况下可以互换使用,但在特定情况下它们有不同的行为和用途。本文将深入探讨这两种操作符的区别,并提供一些实际应用的示例。

点操作符(.

点操作符是访问对象属性最常见和最简洁的方式。它的语法简单直接,适用于大多数情况。

语法
object.property
使用场景
  • 属性名是有效的变量名:点操作符要求属性名符合标识符的命名规则,即只能包含字母、数字、下划线和美元符号,且不能以数字开头。
const person = {name: 'Alice',age: 30
};console.log(person.name); // 输出: Alice
console.log(person.age);  // 输出: 30
  • 静态属性名:属性名在代码中是硬编码的,不需要动态计算。
const car = {brand: 'Toyota',model: 'Corolla'
};console.log(car.brand); // 输出: Toyota
console.log(car.model); // 输出: Corolla

方括号操作符([]

方括号操作符提供了更灵活的方式来访问对象属性,特别是当属性名在运行时确定时。

语法
object['property']
使用场景
  • 属性名包含特殊字符或空格:当属性名包含点操作符无法处理的字符时,需要使用方括号操作符。
const person = {'first-name': 'John','last name': 'Doe'
};console.log(person['first-name']); // 输出: John
console.log(person['last name']);  // 输出: Doe
  • 动态属性名:属性名在运行时计算得出。
const property = 'age';
const person = {name: 'Alice',age: 30
};console.log(person[property]); // 输出: 30
  • 属性名是变量或表达式:当属性名是变量或需要计算的表达式时,方括号操作符非常有用。
const key = 'model';
const car = {brand: 'Toyota',model: 'Corolla'
};console.log(car[key]); // 输出: Corolla

对比总结

  • 语法要求:点操作符只能用于有效的标识符属性名,而方括号操作符则没有此限制,可以处理任何字符串属性名。
  • 灵活性:方括号操作符更灵活,允许使用动态属性名和包含特殊字符的属性名。
  • 代码简洁性:点操作符语法更简洁,代码可读性更高,适用于静态属性名。

实际应用中的选择

在实际开发中,选择点操作符还是方括号操作符取决于具体情况:

  • 使用点操作符:如果属性名是静态的、有效的标识符且不包含特殊字符,优先使用点操作符以提高代码可读性和简洁性。
const user = {username: 'jsmith',email: 'jsmith@example.com'
};console.log(user.username); // 推荐使用点操作符
  • 使用方括号操作符:当属性名动态生成、包含特殊字符或在运行时才能确定时,使用方括号操作符。
const settings = {'theme-color': 'dark','font-size': '16px'
};const themeProperty = 'theme-color';
console.log(settings[themeProperty]); // 推荐使用方括号操作符

结论

理解点操作符和方括号操作符的区别及其适用场景,有助于编写更高效和灵活的JavaScript代码。点操作符适用于大多数静态属性访问,而方括号操作符则在处理动态或特殊字符属性名时发挥重要作用。通过合理选择和使用这两种操作符,可以提高代码的可读性和维护性。

相关文章:

14-JavaScript中的点操作符与方括号操作符

JavaScript中的点操作符与方括号操作符:简单理解与应用 笔记分享 在JavaScript中,访问对象的属性有两种常见方式:点操作符(.)和方括号操作符([])。尽管它们在很多情况下可以互换使用&#xff0…...

智慧大屏是如何实现数据可视化的?

智慧大屏,作为数据可视化的重要载体,已在城市管理、交通监控、商业运营等领域广泛应用。本文旨在阐述智慧大屏实现数据可视化的关键技术和方法,包括数据源管理、数据处理、视觉编码、用户界面与交互设计等。 大屏通过接入企业内部的数据库系…...

【JVM精通之路】垃圾回收-三色标记算法

首先预期你已经基本了解垃圾回收的相关知识,包括新生代垃圾回收器,老年代垃圾回收器,以及他们的算法,可达性分析等等。 先想象一个场景 最开始黑色节点是GC-Roots的根节点,这些对象有这样的特点因此被选为垃圾回收的根…...

Redis缓存(笔记一:缓存介绍和数据库启动)

目录 1、NoSQL数据库简介 2、Redis介绍 3、Redis(win系统、linux系统中操作) 3.1 win版本Redis启动 3.2 linux版本Redis启动 1、NoSQL数据库简介 技术的分类:(发展史) 1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、…...

OrangePi Kunpeng Pro套装测评:开箱与基本功能测试

前言 大家好,我是起个网名真难。非常荣幸受到香橙派的邀请,同时也是第一次做这个事情,很荣幸对香橙派与华为鲲鹏在2024年5月12日联合发布的新品——香橙派Kunpeng Pro开发板进行深入的评测。这款开发板是香橙派与华为鲲鹏合作推出的高性能平…...

RocketMQ教程(二):RocketMQ以及控制台的安装

RocketMQ-Console RocketMQ-Console 是一个针对 Apache RocketMQ 的开源 Web 监控和管理平台。它提供了一个用户友好的界面,通过 Web 浏览器允许用户对 RocketMQ 集群进行管理和监控。这个控制台使得管理和监测 RocketMQ 集群变得更加直观和方便,特别是对于不熟悉命令行操作的…...

电脑记事本怎么恢复之前的内容记录

每个人都曾有过这样的时刻——在记事本上精心记录下的重要内容,一不小心就被删除了。那种心情,仿佛一瞬间从山顶跌落到谷底,无尽的懊悔涌上心头。我也曾遭遇过这样的困境,那些消失的文字对我来说意义非凡,它们的丢失仿…...

Windows下设置pip代理(proxy)

使用场景 正常网络情况下我们安装如果比较多的python包时,会选择使用这种 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-hostpypi.tuna.tsinghua.edu.cn 国内的镜像来加快下载速度。 但是,当这台被限制上…...

【调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站】

调试笔记-系列文章目录 调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站 文章目录 调试笔记-系列文章目录调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站 前言一、调试环境操作系统:OpenWrt 23.05.3调试环境调试目标…...

安装 hbase(伪分布式)

目录 1、安装 jdk8 (1)选择 jdk 版本 (2)下载 jdk 并解压 (3)配置环境变量 2、安装hadoop (1)添加 hadoop 用户,配置免密登录 (2)下载 hado…...

Angular-数组循环

简单数组 .ts-定义一个数组 // 第一种定义方式 public arr1:string[] [aa,bb,cc]; // 完整版 arr2:string[] [aa,bb,cc]; // 省略版 public objects:any[] [{username:Echoo,age:18},{username:Amily,age:39},{username:Mike,age:34}]; // 元素是对象 //第二种定…...

初级网络工程师之入门到入狱(一)

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 网络工程师从入门到入狱 前言一、交换机二、路由器三、DHCP(动态主机配置协议)四、路由器配置 DHCP自…...

数据挖掘与机器学习——分类算法

目录 机器学习算法最普通分类: 分类算法的定义: 分类算法的应用: 分类器实现分类: 分类器的构建标准: 概率模型: 贝叶斯公式: 朴素贝叶斯算法(朴素贝叶斯分类器)…...

变压器励磁涌流MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 变压器励磁涌流的产生机理 1、变压器是电力系统的关键部分,在实际的 运行中,变压器需要进行相应的充电,而在充电的过 程中,就需要进行开合闸作业。在开合闸作业…...

ToxVidLLM:一个用于检测有害视频的多模态多任务框架

在一个社交媒体平台赋予用户成为内容创作者力量的时代,数字领域见证了前所未有的信息传播激增,到2023年,近82%的互联网流量是视频内容。因此,像抖音和YouTub这样的平台已经成为主要的信息来源。一个显著的统计数据凸显了这些平台的…...

比较(二)利用python绘制雷达图

比较(二)利用python绘制雷达图 雷达图(Radar Chart)简介 雷达图可以用来比较多个定量变量,也可以用于查看数据集中变量的得分高低,是显示性能表现的理想之选。缺点是变量过多容易造成阅读困难。 快速绘制…...

Visual Studio怎么用?

Visual Studio的使用涉及多个方面,以下是一个清晰的使用指南,涵盖了Visual Studio的基本功能、安装、界面介绍、项目创建、代码编写、调试和发布等关键步骤: 一、Visual Studio简介 Visual Studio是由微软公司开发的一款集成开发环境&#…...

Python工程中,__init__.py文件有什么用

在Python工程中,__init__.py 文件有几个重要的用途: 标识目录为包: 在Python 3.3之前,__init__.py 文件的存在是为了告诉解释器,该目录是一个Python包。这使得包中的模块可以被导入和使用。即使在Python 3.3之后可以没…...

YOLOv10环境搭建推理测试

引子 两个多月前YOLOv9发布(感兴趣的童鞋可以移步YOLOv9环境搭建&推理测试_yolov9安装-CSDN博客),这才过去这么短的时间,YOLOv10就横空出世了。现在YOLO系列搞得就和追剧一样了。。。OK,那就让我们开始吧。 一、…...

tomcat-memcached会话共享配置

目录 1、安装memcache服务 2、把依赖的jar包移至tomcat/lib目录下 3、配置tomcat/conf/context.xml 4、重启tomcat服务 1、安装memcache服务 具体安装步骤此处不详细说明,自行根据实际情况安装即可 2、把依赖的jar包移至tomcat/lib目录下 3、配置tomcat/conf/c…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

软件工程 期末复习

瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...