JavaScript 引用数据类型
·
JavaScript 引用数据类型
在 JavaScript 中,数据类型分为基本类型(原始类型)和引用类型(对象类型)。引用数据类型的特点是其值存储在堆内存中,变量存储的是指向该内存地址的引用(指针)。当复制引用类型变量时,复制的只是引用地址,而非实际数据。
主要引用数据类型
-
对象(Object)
- 键值对集合:
{ key: value } - 创建方式:
let obj = { name: "Alice", age: 30 }; let obj2 = new Object(); // 构造函数
- 键值对集合:
-
数组(Array)
- 有序数据集合:
[item1, item2] - 创建方式:
let arr = [1, "text", true]; let arr2 = new Array(5); // 长度为5的空数组
- 有序数据集合:
-
函数(Function)
- 可执行代码块
- 创建方式:
function sum(a, b) { return a + b; } let multiply = new Function('a', 'b', 'return a * b');
-
日期(Date)
- 时间日期对象
let now = new Date(); // 当前时间 -
正则表达式(RegExp)
- 模式匹配工具
let regex = /ab+c/i; // 忽略大小写的匹配
核心特性
-
引用传递
let arr1 = [1, 2, 3]; let arr2 = arr1; // 复制引用地址 arr2.push(4); // 修改会影响原数据 console.log(arr1); // 输出 [1, 2, 3, 4] -
动态属性
let obj = {}; obj.newKey = "动态添加属性"; // 运行时修改 -
比较行为
let a = { value: 10 }; let b = { value: 10 }; console.log(a === b); // false (比较引用地址)
内存模型
栈内存 堆内存
┌──────┐ ┌────────────┐
│ 变量 │───→│ 对象实际数据 │
└──────┘ └────────────┘
重要操作
-
浅拷贝(复制第一层)
let original = { a: 1, b: { c: 2 } }; let shallowCopy = { ...original }; // 展开运算符 -
深拷贝(完全独立副本)
let deepCopy = JSON.parse(JSON.stringify(original)); -
类型检测
console.log(typeof []); // "object" console.log(Array.isArray([])); // true console.log({} instanceof Object); // true
注意事项
-
引用类型变量在函数参数中按引用传递
function modify(obj) { obj.key = "changed"; } let test = {}; modify(test); console.log(test.key); // "changed" -
循环引用会导致内存泄漏
let objA = {}; let objB = { ref: objA }; objA.ref = objB; // 循环引用 -
使用
const声明时:const arr = [1, 2]; arr.push(3); // 允许(修改堆数据) arr = [4, 5]; // 报错(禁止修改引用地址)
理解引用数据类型对掌握 JavaScript 的内存管理、函数传参和数据操作至关重要。
更多推荐


所有评论(0)