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

JS中对象的方括号[]和点.【对象属性的访问和设置】

在 JavaScript 中,可以使用多种方式来访问和设置对象的属性, 包括点表示法和方括号表示法。

点表示法和方括号表示法

  1. 点表示法:使用点号(.)来访问或设置对象的属性。
  2. 方括号表示法:使用方括号([])来访问或设置对象的属性。

这两种方法基本上是等价的,然而在某些情况下,方括号表示法能够提供更多的灵活性,例如属性名是变量或包含特殊字符的情况。

示例代码解释

const s = {};
s['name'] = 'john';
s.name = 'bob';

这段代码执行了以下操作:

  1. 创建对象

    const s = {};
    

    创建了一个新的空对象 s

  2. 方括号表示法设置属性

    s['name'] = 'john';
    

    使用方括号表示法,设置对象 s 的属性 name'john'

    此时,s 的状态为:

    {name: 'john'
    }
    
  3. 点表示法设置属性

    s.name = 'bob';
    

    使用点表示法,设置对象 s 的属性 name'bob'

    最终,s 的状态为:

    {name: 'bob'
    }
    

由于最后一次设置操作赋值为 'bob',属性名和其值之间的映射被更新,因此最终 s.name 变成了 'bob'

点表示法 vs 方括号表示法

使用点表示法的示例:
const person = {};
person.name = 'Alice';
person.age = 25;console.log(person.name); // 输出 'Alice'
console.log(person.age);  // 输出 25
使用方括号表示法的示例:
const person = {};
person['name'] = 'Alice';
person['age'] = 25;console.log(person['name']); // 输出 'Alice'
console.log(person['age']);  // 输出 25
方括号表示法的特殊应用场景:
  1. 使用变量作为属性名

    const person = {};
    const prop = 'name';
    person[prop] = 'Alice';console.log(person.name); // 输出 'Alice'
    
  2. 处理包含特殊字符的属性名

    const person = {};
    person['first-name'] = 'Alice';console.log(person['first-name']); // 输出 'Alice'
    
  3. 动态属性名

    const person = {};
    let key = 'age';person[key] = 30;console.log(person.age); // 输出 30
    

总结

  • 点表示法 (.):更简洁,用于常规属性名(遵循变量命名规则)。
  • 方括号表示法 ([]):更灵活,可用于属性名是变量、含有特殊字符或者包含空格的情况。

在你的示例中,两种表示法都用于设置和获取对象属性,最后一次的赋值操作覆盖了前一个操作,因此 s.name 的最终值为 'bob'

相关文章:

  • 如何在项目中打印sql和执行的时间
  • 机器学习的持续交付-CD4ML 端到端自动化构建部署机器学习应用
  • RuoYi-后端管理项目入门篇1
  • Jupyter Notebook安装及基本使用
  • arm的GIC中断
  • c++初阶知识——内存管理与c语言内存管理对比
  • B树与B+树的区别
  • 中间件的理解
  • 数据建模标准-关系建模
  • Airtest的控制手机滑动位置偏差修正方法总结
  • yearrecord——一个类似痕迹墙的React数据展示组件
  • 鸿蒙架构之AOP
  • WordPress 主题技巧:给文章页增加“谁来过”模块。
  • 处理uniapp刷新后,点击返回按钮跳转到登录页的问题
  • 手机数据恢复篇:如何从 Android 设备内恢复数据
  • 【刷算法】求1+2+3+...+n
  • js面向对象
  • JS字符串转数字方法总结
  • maya建模与骨骼动画快速实现人工鱼
  • React组件设计模式(一)
  • SOFAMosn配置模型
  • Swift 中的尾递归和蹦床
  • WePY 在小程序性能调优上做出的探究
  • windows-nginx-https-本地配置
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 关于extract.autodesk.io的一些说明
  • 开源地图数据可视化库——mapnik
  • 前端工程化(Gulp、Webpack)-webpack
  • 设计模式(12)迭代器模式(讲解+应用)
  • 原生 js 实现移动端 Touch 滑动反弹
  • 【云吞铺子】性能抖动剖析(二)
  • C# - 为值类型重定义相等性
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​数据链路层——流量控制可靠传输机制 ​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #define,static,const,三种常量的区别
  • #Linux(权限管理)
  • (13)Hive调优——动态分区导致的小文件问题
  • (Note)C++中的继承方式
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm高校实验室 毕业设计 800008
  • (回溯) LeetCode 77. 组合
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (转) Android中ViewStub组件使用
  • (转)ORM
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *2 echo、printf、mkdir命令的应用
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net 获取某一天 在当月是 第几周 函数
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!