码迷,mamicode.com
首页 > 其他好文 > 详细

[ES6] Objects vs Maps

时间:2016-01-13 07:02:39      阅读:245      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!