lux-data-structure
v1.0.7
Published
拓展js数据结构
Downloads
10
Readme
lux-data-structure介绍
本包拓展了JavaScript的基础数据结构,新增了栈(Stack)结构,后续将逐步扩充更多的数据结构
栈(Stack)结构实现
本包的栈(Stack)
底层采用WeakMap
实现基础数据结构,优点如下
- 数据私有化
WeakMap
提供了一种有效的方式来实现数据私有化。通过将私有数据存储在 WeakMap
中,并使用实例对象作为键,可以确保这些数据只能通过类的内部方法访问和修改,而无法从外部直接访问。
- 防止命名冲突
使用 WeakMap
可以避免命名冲突。因为私有数据存储在 WeakMap
中,而不是直接作为类的属性存在,开发者不需要担心私有属性的名称与类的其他属性或方法发生冲突。
- 垃圾回收优化
WeakMap
的键是弱引用,这意味着如果没有其他引用指向该对象实例,垃圾回收机制可以回收该对象。这样,即使对象实例被销毁,它对应的私有数据也会被自动清理,从而防止内存泄漏。
- 数据隔离
每个实例的私有数据是完全隔离的。即使有多个实例,它们之间的私有数据也不会相互干扰。每个实例都有自己独立的私有数据存储,确保数据的独立性和安全性。
- 简化代码
使用 WeakMap
可以使代码更简洁和易于维护。开发者不需要手动管理私有属性的访问权限,只需通过 WeakMap
的 get
和 set
方法来访问和修改私有数据。
栈(Stack)结构的方法
push(element)
将一个元素压入栈顶。
参数
element
:要添加到栈顶的元素。
示例
stack.push(1);
pop()
移除并返回栈顶的元素。如果栈为空,返回 undefined
。
返回
- 栈顶元素或
undefined
。
- 栈顶元素或
示例
console.log(stack.pop()); // 输出: 3
peek()
返回栈顶的元素,但不移除它。如果栈为空,返回 undefined
。
返回
- 栈顶元素或
undefined
。
- 栈顶元素或
示例
console.log(stack.peek()); // 输出: 2
isEmpty()
检查栈是否为空。
返回
true
如果栈为空,否则false
。
示例
console.log(stack.isEmpty()); // 输出: false
size()
返回栈的元素个数。
返回
- 栈中元素的数量。
示例
console.log(stack.size()); // 输出: 2
clear()
清空栈。
示例
stack.clear();