Day03作业 数据结构
概述 基本类型和引用类型
基本类型:String Boolean Number Null Undefined Symbol Bigint。
引用类型:Object(存储属性和属性值) Function。
数组(Array):有序的值的列表。
集合(Set):唯一值的集合。
特殊集合(WeakSet):特殊Set。
映射(Map):键值对。
特殊映射(WeakMap):特殊Map。
区别:
(内存存储)基本类型存储在栈(Stack)里面;引用类型在栈上存储对堆上数据的引用(指针),在堆(Heap)上存储引用类型本身的数据。
(清理方式)基本类型函数和方法执行完就清理内存;引用类型采用垃圾回收机制。
对象 存储属性和属性值
定义对象:
Object构造器
对象字面量
数组 有序的值的列表
(与其他编程语言相比)区别:
数组的每个槽位可以存储任意类型的数据。
动态大小 —— 影响性能。
定义数组:(声明)
数组构造器const oArray = new Array();
初始化:
解构数组:将
数组中的元素取出来赋值给变量。
数组的属性和方法:
length属性:数组的长度。
集合 唯一值的集合
当对象添加到Set中时,只要Set存在,它们就会一直存储在Set中,即使对对象的原始引用被删除了依然如此。用技术术语来说,就是对象阻止被垃圾回收,而这会导致内存泄漏。
WeakSet 通过垃圾回收任何引用原始引用已经被删掉的“死对象”,从而可以避免这种情况。
WeakSet 只能添加非基本类型数据,否则会抛出一个类型错误(TypeError)。
Map 存储键值对列表
创建Map:
const romanNumerals = new Map();
romanNumerals.set(1,‘I’);
romanNumerals.set(2,‘II’).set(3,‘III’).set(4,‘IV’).set(5,‘V’);
console.log(romanNumerals);// Map { 1 => ‘I’, 2 => ‘II’, 3 => ‘III’, 4 => ‘IV’, 5 => ‘V’ }
1
2
3
4
方法和属性:
size属性:获取键和值的数量。(只读属性)
const romanNumerals = new Map();
romanNumerals.set(1,‘I’);
romanNumerals.set(2,‘II’).set(3,‘III’).set(4,‘IV’).set(5,‘V’);
console.log(romanNumerals.size);//WeakMap
键不能是基本数据类型的值,并且在对原始对象的引用被删除时,垃圾回收会自动删除所有死条目。 5!](https://img-blog.csdnimg.cn/2020122810294863.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODIzNzcw,size_16,color_FFFFFF,t_70)
总结
数据类型
基础类型:String Number Boolean Symbol undefined null。
引用类型:Object/Function。
对象
创建对象的两种方式
构造器