Open serendipityApe opened 2 years ago
题目
Create a simple store for DOM element
例子
JavaScript中有Map,我们可以用任何data做key,即便是DOM元素。
const map = new Map() map.set(domNode, somedata)
如果运行的JavaScript不支持Map,我们如何能让上述代码能够工作?
请在不利用Map的条件下实现一个Node Store,支持DOM element作为key。
class NodeStore { set(node, value) { } get(node) { } has(node) { } }
你可以实现一个通用的Map polyfill。或者利用以下DOM元素的特性来做文章?
请注意时间空间复杂度。
答案
//没啥难度,挺简单的这题 class NodeStore { /** * @param {Node} node * @param {any} value */ constructor(){ this.size=0; this.values=[]; } set(node, value) { node.__mapId__=this.size++; this.values[this.size-1]=value; } /** * @param {Node} node * @return {any} */ get(node) { let id=node.__mapId__; return this.values[id]; } /** * @param {Node} node * @return {Boolean} */ has(node) { let id= node.__mapId__; return this.size >= id; } }
Create a simple store for DOM element
JavaScript中有Map,我们可以用任何data做key,即便是DOM元素。
如果运行的JavaScript不支持Map,我们如何能让上述代码能够工作?
请在不利用Map的条件下实现一个Node Store,支持DOM element作为key。
你可以实现一个通用的Map polyfill。或者利用以下DOM元素的特性来做文章?
请注意时间空间复杂度。