javascript - 如何在 Javascript 中获取哈希表或记录类型而不发生任何 namespace 冲突?

标签 javascript hashmap

在 JavaScript 中,通常使用对象作为哈希:

hash = {};
hash.key = 'value';

甚至可以使用带空格的键:

hash['a key'] = 'a value';

但有几个限制:不得调用 key

  • __proto__
  • 构造函数,
  • hasOwnProperty,
  • isPrototypeOf,
  • propertyIsEnumerable,
  • toLocalString,
  • toString,
  • valueOf,
  • __defineGetter__
  • __defineSetter__,
  • __lookupGetter__
  • __lookupSetter__

因为这会导致命名空间与 JavaScript 对象内部发生冲突。

规避此限制的最佳解决方案是什么?

最佳答案

例如,您可以使用Object.create并将parent设置为null

var data = {};
console.log( 
  data.toString
); // in parent prototype there is toString method. returns function 

var hash = Object.create(null);
console.log( 
  hash.toString,
  hash.valueOf,
  hash.__defineGetter__
); // will be undefined because we set parent as null

关于javascript - 如何在 Javascript 中获取哈希表或记录类型而不发生任何 namespace 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183046/

相关文章:

java - 哈希算法和HashMap

java - 从 HashMap 打印值而不返回值本身

java - 计算 Hash<String,List<String>> 中 List 中项目值的出现次数

javascript - 如何使用 ChartJS 设置工具提示中每个项目的颜色

javascript - 如何将对象传递给 d3-context-menu 动态菜单列表

javascript - 从一个 channel 记录消息

java - Java中遍历HashMap时如何保证key的顺序不被改变?

java - 如何从文本文件中填充 Map<String, List<String>>? -难以动态命名每个列表

javascript - 使用 require 代替 import { a, b } from 'some-lib' ,等效的是什么?

javascript - WP 菜单未按预期工作