首页 > 其他 > 详细

[ES6] Objects vs Maps

时间:2016-01-13 07:02:00      阅读:201      评论:0      收藏:0      [点我收藏+]

Map is really useful when you want to use object as a key to set vaule, in ES5, you cannot really use object as a key:

 

var user1 = {
  name: "Wan",
  age: 25
};

var user2 = {
  name: "Zhen",
  age: 27
};

var users = {};

users[user1] = 5;
users[user2] = 10;

console.log(users);

/**
[object Object] {
  [object Object]: 10
}
**/

 

As you can see, the output is always 10. It means the last value will overwrite the previous value.

The reason for that is because in Javascript, when you use Array syntax to assign value, the ‘key‘ is always ‘string‘.

 

So if you use object ‘user1‘, Javascript engine actually read it as 

"[object Object]"

 

In other words, no matter what object you give, the ‘users‘ array has only one value:

console.log(Object.keys(users));  // ["[object Object]"] 

 

-------------------------------------------------

 

Map in ES6 can help to solve the problem:

var user1 = {
  name: "Wan",
  age: 25
};

var user2 = {
  name: "Zhen",
  age: 27
};

var users = new Map();

users.set(user1, 5);
users.set(user2, 10);

console.log(users.get(user1));  // 5
console.log(users.get(user2));  // 10

 

[ES6] Objects vs Maps

原文:http://www.cnblogs.com/Answer1215/p/5126113.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!