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

JavaScript 进阶基础:对象与 Math 的实际用法总结

目录

一、对象

1. 一个简单对象

二、对象的属性

1. 如何访问属性

2. 动态添加属性

三、对象的方法

1. 定义方法

2. 调用方法

3. 动态添加方法

四、对象的一个坑

五、遍历对象(for...in)

⚠️ 注意点

六、null 的理解

一个有意思的点:

七、内置对象:Math

1. 常用属性

2. 常用方法

(1)随机数

(2)取整

(3)最大 / 最小值

(4)幂和平方根

八、一个实用场景:随机数区间

九、总结

1. 对象

2. 属性 & 方法

3. 操作对象

4. Math


一、对象

对象是 JavaScript 数据类型的一种,之前已经学习了数值类型、字符串类型、布尔类型、undefined。对象数据类型可以被理解成是一种数据集合。它由属性和方法两部分构成。


1. 一个简单对象

let person = { name: '小明', age: 18, height: 185, gender: '男' }

可以这样理解:

对象 = 属性 + 方法


二、对象的属性

属性就是描述信息,一般是“名词”。


1. 如何访问属性

person.name // 小明 person['age'] // 18

👉 两种方式:

  • .(最常用)
  • [](更灵活,比如属性名是变量)

2. 动态添加属性

let user = {} user.name = '小明' user['age'] = 18

👉 这个在实际开发中非常常见,比如:

  • 接口数据拼装
  • 动态扩展对象

三、对象的方法

如果属性是“数据”,那方法就是“行为”。

本质上:

方法 = 放在对象里的函数


1. 定义方法

let person = { name: '小红', run: function () { console.log('我在跑步') } }

2. 调用方法

person.run()

👉 注意:一定要加()


3. 动态添加方法

let user = {} user.move = function () { console.log('移动中...') }

四、对象的一个坑

let obj = { name: '小明', name: '小红' }

👉 结果:

obj.name // 小红

后面的会覆盖前面的。


五、遍历对象(for...in)

let obj = { name: 'pink', age: 20 } for (let k in obj) { console.log(k) // 属性名 console.log(obj[k]) // 属性值 }

⚠️ 注意点

  • k是字符串
  • obj[k]访问值
  • 不推荐用来遍历数组(容易出问题)

六、null 的理解

let obj = null

👉 表示:

“这里本来应该是一个对象,但现在没有”


一个有意思的点:

typeof null // "object"

👉 这是 JS 的历史遗留问题,不用深究,记住就行。


七、内置对象:Math

JavaScript 已经帮我们内置了很多工具,其中最常用的就是:

👉Math


1. 常用属性

Math.PI // 圆周率

2. 常用方法

(1)随机数
Math.random()

👉 生成 0 ~ 1 的随机数


(2)取整
Math.ceil(3.2) // 向上取整 → 4 Math.floor(3.9) // 向下取整 → 3 Math.round(3.5) // 四舍五入 → 4

(3)最大 / 最小值
Math.max(10, 20, 5) // 20 Math.min(10, 20, 5) // 5

(4)幂和平方根
Math.pow(2, 3) // 8 Math.sqrt(16) // 4

八、一个实用场景:随机数区间

比如生成 1~10:

let num = Math.floor(Math.random() * 10) + 1

九、总结

1. 对象

  • 用来描述“一个东西”
  • 本质是键值对集合

2. 属性 & 方法

  • 属性 → 数据
  • 方法 → 行为(函数)

3. 操作对象

  • 增:obj.xxx = value
  • 查:./[]
  • 遍历:for...in

4. Math

  • 随机数(最常用)
  • 取整
  • 最大最小值
  • 幂运算
http://www.jsqmd.com/news/670786/

相关文章:

  • 从 Hello Excel 走进 SAP iRPA,记录一次最朴素也最重要的自动化起步
  • Vue3项目部署后图片加载慢?除了懒加载,你还可以试试这招PS+Webpack的‘组合拳’
  • 告别日志混乱!用log4net在C# WinForms项目中实现日志文件自动滚动与分级管理
  • S7-1500 PLC ModbusTCP通信避坑指南:从IP设置到DB块优化的完整配置流程
  • 不止于调试:挖掘J-Link Commander隐藏命令,玩转芯片信息读取与安全启动
  • PMP题库_11_敏捷管理
  • 071、芯片级优化:扩散模型专用加速器设计手记
  • 保姆级教程:在Ubuntu 20.04上用Docker搞定NVIDIA TAO Toolkit环境搭建(含Jupyter配置)
  • 告别Keil和IAR?手把手教你用MounRiver Studio搞定RISC-V MCU开发环境
  • 【openclaw】OpenClaw v2026.4.15系统级架构分析
  • AI专著生成神器推荐!一键产出20万字专著,快速解决写作烦恼
  • ComfyUI-Impact-Pack 终极实战指南:三步解决AI图像增强难题
  • Audio Slicer:智能音频切片工具,告别繁琐手动剪辑的终极解决方案
  • VM如何将扩展容量减小
  • ABAP 又迎来一个顶层关键字,聊透 ABAP CE 2602 里的 MERGE
  • 2026年亲测10款高效降AI率工具:快速提升论文效率收藏指南 - 降AI实验室
  • PCB厂工程师不会告诉你的细节:差分线‘绿油’和‘共面地’对阻抗的实际影响有多大?
  • 别再只点‘下载’了!手把手教你读懂Keil的FLM文件,自己也能改Flash算法
  • 从热力图到Transformer:我是如何用Excel给女朋友讲明白Self-Attention的
  • 高效解决网盘限速:8大主流平台直链下载系统完全指南
  • 7种字重思源宋体:免费开源中文字体的完整使用指南
  • 关于鸿蒙6.0纯血安装谷歌三件套探讨心得
  • 3分钟为Word添加APA第7版引用模板:告别手动格式化的终极指南
  • SITS2026实证突破:AGI驱动的分子生成引擎如何实现92.7%临床前候选化合物成药性预测准确率?
  • 从飞控模拟到游戏开发:用Qt C++实时渲染ADI姿态仪数据的完整流程
  • 2026靠谱的皮革面活动屏风隔断厂家推荐,高性价比之选不容错过 - 工业品牌热点
  • 下午题_试题二
  • 3分钟上手Nucleus Co-Op:单机变分屏,与好友共享游戏乐趣
  • 性价比高的广告设计优质公司怎么选,深度解析口碑企业 - mypinpai
  • 数字信号处理学习笔记--Chapter 1.4.1 时域采样定理基本概念