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

JavaScript基础篇——第五章 对象(最终篇)

目录

十一、对象与内置对象

11.1 对象本质与声明

11.2 对象属性操作

11.3 对象方法

11.4 遍历对象

11.5 内置Math对象

11.6 数据类型存储机制

11.7 专业术语解析


本文摘要:JavaScript对象是描述现实事物的无序数据集合,包含属性和方法。对象通过字面量或构造函数创建,属性操作包括查询、修改、新增和删除。方法使用函数表达式定义并通过this访问属性。遍历对象使用for...in循环,注意属性无序存储。内置Math对象提供多种数学方法。数据存储分值类型(栈存储,深拷贝)和引用类型(堆存储,浅拷贝)。专业术语包括关键字、标识符、表达式和语句等。对象类比"人物卡片",核心知识体系涵盖变量到对象的基础语法要点。

十一、对象与内置对象

11.1 对象本质与声明

核心定义:

1.对象是无序的数据集合,用于描述现实事物

2.与数组对比:数组有序(索引访问),对象无序(键值对)

声明语法:

// 对象字面量(推荐)let 对象名 = {属性名: 属性值,方法名: function() { ... }};// 构造函数(了解)let 对象名 = new Object();

生活化案例:

let teacher = {name:'张老师',      // 静态特征(属性)age: 18,               // 属性skills: ['教学', '唱歌', '跳舞'], // 数组属性teach: function() {    // 动态行为(方法)console.log('讲解JavaScript知识');}};

11.2 对象属性操作

操作类型

语法

示例

内存变化

查询

对象.属性名

teacher.name → 'pink老师'

读取栈中地址指向的值

对象['属性名']

teacher['age'] → 18

修改

对象.属性名 = 新值

teacher.age = 20

堆中数据被修改

新增

对象.新属性名 = 值

teacher.gender = '女'

堆中添加新键值对

删除

delete 对象.属性名

delete teacher.skills

堆中移除键值对

两种访问方式对比:

场景

点语法(.)

方括号([])

常规属性名

✅ obj.name

✅ obj['name']

特殊字符属性名

❌ obj.first-name

✅ obj['first-name']

动态属性名

✅ let key='age'; obj[key]

11.3 对象方法

方法定义:

let person = {name: 'Andy',// 方法定义(函数表达式)sayHi: function() {console.log('你好!');},// ES6简写语法eat(food) {  // 等价于 eat: function(food)console.log(`吃${food}`);}};

方法调用:

person.sayHi();    // 输出:你好!person.eat('苹果'); // 输出:吃苹果

注意事项:

1.方法名后必须有()才会执行

2.方法内部可通过this访问对象属性(进阶内容)

11.4 遍历对象

for...in 循环:

let student = {name: '小明',age: 16,grade: '高一'};for (let key in student) {console.log(key);         // 属性名:'name','age','grade'console.log(student[key]); // 属性值:'小明',16,'高一'}

遍历规则:

1.key变量自动获取每个属性名(字符串类型)

2.必须用对象[key]获取值(不能用对象.key)

3.遍历顺序不固定(对象属性无序存储)

11.5 内置Math对象

方法

功能

示例

结果

Math.random()

生成0~1随机数

Math.random()

0.123(随机)

Math.ceil(x)

向上取整

Math.ceil(1.1)

2

Math.floor(x)

向下取整

Math.floor(1.9)

1

Math.round(x)

四舍五入

Math.round(1.5)

2

Math.max(a,b...)

求最大值

Math.max(5, 10, 3)

10

Math.min(a,b...)

求最小值

Math.min(5, 10, 3)

3

Math.pow(x,y)

幂运算(x的y次方)

Math.pow(2, 3)

8

Math.abs(x)

绝对值

Math.abs(-5)

5

随机整数公式:

// 生成min~max的随机整数function getRandomInt(min, max) {return Math.floor(Math.random() * (max - min + 1)) + min;}let dice = getRandomInt(1, 6); // 1~6随机骰子数

11.6 数据类型存储机制

值类型(栈存储):

类型

特点

复制行为

string

字符串

深拷贝(完全独立)

number

数字

boolean

布尔值

undefined

未定义

null

空值

引用类型(堆存储):

类型

特点

复制行为

object

对象

浅拷贝(共享引用)

array

数组

function

函数

内存模型图示:

值类型复制:创建完全独立的副本

let a = 10;let b = a;  // b=10(内存中新空间)b = 20;     // a仍为10

引用类型复制:复制引用地址(指向同一对象)

let obj1 = { name: 'Alice' };let obj2 = obj1;     // 复制引用地址obj2.name = 'Bob';   // 修改堆中数据console.log(obj1.name); // 'Bob'(同步变化)

11.7 专业术语解析

术语

定义

示例

关键字

JavaScript中有特殊含义的保留单词

let, function, if

保留字

未来可能成为关键字的单词(避免使用)

class, enum, super

标识符

变量、函数、属性的名字

userName, calculateTotal

表达式

会产生值的代码片段

10 + 5, age >= 18

语句

执行操作的完整指令

if (...) {...}, for (...) {...}


知识体系全景图

终极整合说明:

1.对象生活化:用“人物卡片”类比对象(属性=特征,方法=行为)

2.内存可视化:

(一)栈/堆存储差异图解

(二)深浅拷贝动画演示

3.操作对比表:

(一)属性访问两种方式适用场景

(二)Math方法速查表

4.易错点标注:

(一)方法调用忘记()

(二)遍历对象时错误使用对象.key

(三)引用类型复制的陷阱

5.完整覆盖所有图片内容:

(一)对象术语(属性/方法)

(二)for...in遍历机制

(三)数据类型存储区别

(四)专业术语定义

至此,JavaScript核心知识体系已完整构建,从变量到对象,覆盖基础语法所有关键点。下一个篇章JavaScript加强篇。

http://www.xdnf.cn/news/15013.html

相关文章:

  • whitt算法之特征向量的尺度
  • [数学基础] 矩阵的秩及其应用
  • K8S使用命令多集群管理配置
  • Java异步编程全解析:从基础到高阶实战
  • C#基础篇(09)结构体(struct)与类(class)的详细区别
  • 安卓设备信息查看器 - 源码编译
  • PiscTrace深蹲计数功能实现:基于 YOLO-Pose 和人体关键点分析
  • Unity Demo-3DFarm详解-其二
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • EFK9.0.3 windows搭建
  • 供应链管理:定量分析中的无量纲化处理
  • jenkins+固定agent节点+maven+sonarqube+docker
  • Redis:分组与设备在 Redis 中缓存存储设计
  • 类与对象【下篇】-- 关于类的其它语法
  • Linux——I/O复用
  • Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
  • 光伏无人机3D建模:毫秒级精度设计
  • Webpack、Vite配置技巧与CI/CD流程搭建全解析
  • 什么是公链?
  • 敏捷模式下开发与测试的最佳协作模式
  • Node.Js是什么?
  • 【bug修复积累】关于包装类型和基本数据类型的使用
  • 分库分表之实战-sharding-JDBC水平分库+分表后:查询与删除操作实战
  • SQLZoo 练习与测试答案汇总(复杂题有最优解与其他解法分析、解题技巧)
  • 全志H616开发学习文档
  • WPF学习笔记(27)科学计算器
  • ObjectClear - 图像处理新革命,一键“抹除”图像中任意物体与阴影 支持50系显卡 一键整合包下载
  • [附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统
  • 如何将FPGA设计的验证效率提升1000倍以上(3)
  • rt thread studio 和 KEIL对于使用rt thread 的中间件和组件,哪个更方便