JSON对象作为键值对中的键

gtb*_*gtb 5 javascript json key object

我认为这是不可能的(在JavaScript中),这是由于持久性的序列化?

ActionScript3允许将对象实例作为键flash.utils.Dictionary

然后,字符串Id将服务于实例的相同唯一性目的,对吗?

Pav*_*vlo 5

这就是ES6 Map的用途,它允许使用对象作为键:

var map = new Map();
var obj1 = {};
var obj2 = {}; // identical, but not the same

map.set(obj1, 'value');

map.get(obj1); // 'value'
map.get(obj2); // undefined
Run Code Online (Sandbox Code Playgroud)

演示(Firefox和IE 11):http://jsbin.com/ehIgEha/1/edit?js,console,浏览器支持:http://kangax.github.io/compat-table/es6/#Map

  • @Willem:想象一下你有一个映射`user - > posts`.当然你可以只使用用户ID作为键(`user_id - > posts`)并使用另一个映射`user_id - > user`,但是能够使用任何数据类型作为键更方便和灵活.此外,将用作属性名称的值隐式转换为字符串可能会造成混淆并导致错误.更实际的例子可能是`DOMElement - > data`的映射. (3认同)