WeakMap实现类

date
Mar 13, 2023
slug
js-stack-weakmap
status
Published
tags
JavaScript数据结构与算法
stack
JavaScript
summary
JavaScript stack with WeakMap
type
Post
WeakMap可以存储键值对,其中键是对象,值可以是任意数据类型。
例:用 WeakMap 存储 item 属性, Stack 类如下:
const items = new WeakMap();//声明 WeakMap 类型的变量 item
class Stack{ 
   constructor(){ 
       //在constructor中,以this为键,把代表栈的数组存入items
        items.set(this,[]);
    }
    push(element){
        //从 WeakMap 取出值,以 this 为键从 item 中取值
        const s = items.get(this);
        s.push(element);
    }
    pop(){
        const s = items.get(this);
        const r = s.pop();
        return r;
    }
}
items 在 Stack 类里是真正的私有属性。采用这种方法,代码的可读性 不强,而且在扩展该类时无法继承私有属性。
 

© shallrise 2025