在飞机大战的模板中的pool.js文件中,有以下代码
const __ = {
poolDic: Symbol('poolDic')
}
/**
* 简易的对象池实现
* 用于对象的存贮和重复使用
* 可以有效减少对象创建开销和避免频繁的垃圾回收
* 提高游戏性能
*/
export default class Pool {
constructor() {
this[__.poolDic] = {}
}
/**
* 根据对象标识符
* 获取对应的对象池
*/
getPoolBySign(name) {
return this[__.poolDic][name] || ( this[__.poolDic][name] = [] )
}
……
}
请问Pool类的构造函数中this[__.poolDic] = {}这段代码怎么理解?__.poolDic是由Symbol('poolDic')得到的
唯一标识,this[__.poolDic]是什么呢?是一个数组?getPoolBySign方法中的this[__.poolDic][name]又怎么理解是一个2维数组?
poolDic 这个命名是一个简写,完整的命名可以想象到是 poolDictionary,是一个用来管理对象的 key-value 字典,其中 key 是对象的 name(对象的一个标识符),value 就是这个对象的 reference。也就是说这段代码将 Pool 对象实例的 __.poolDic 属性初始化为一个空对象,然后在游戏运行过程中不断地往这个 dictionary 里 set 对象,再在需要的时候通过 getPoolBySign 获取。
谢谢白开水耐心解答小白问题,么么哒!