美文网首页
ES6-新增数据类型

ES6-新增数据类型

作者: zhenghongmo | 来源:发表于2020-03-13 16:37 被阅读0次

symbol类型

  • 全局函数 window.Symbol()

  • typeof window.Symbol() 返回的类型为 "symbol"

  • 不支持语法: new Symbol()

  • 每个从Symbol()返回的值都是唯一的:

    var a=Symbol(); var b=Symbol(),a==b不成立 .

  • Symbol()可以作为一个对象的属性(key),这是该数据类型存在的唯一目的。并且由于唯一性,别人读不到这个属性。

  • Symbol是一种基本数据类型

set类型

  • Set是一种对象,Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
let myset = new Set([1,2,3,3,4,5,5,5])
myset //{1,2,3,4,5}
  • 对原始值或对象的引用可去重,如果不同的对象里面有相同的值则不会被去重。
let a={};
let b={};
new Set ([a,b])  //{{...},{...}}
  • 数组去重
function uniq(arr){
    Array.from(new Set(arr))
}

map类型

  • map对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
var mymap = new Map();

var keyobj = {}, 
keyFunc = function () {},
keyString = "a string";

//添加key
mymap.set(keyobj,'objvalue');
mymap.set(keyFunc,'value');
mymap.set(keyString,'value');

//读取值
myMap.get(keyString);    
myMap.get(keyobj);       
myMap.get(keyFunc);
  • myMap.entries(),返回一个新的 Iterator 对象,它按插入顺序包含了Map对象中每个元素的 [key, value] 数组。
var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

var mapIter = myMap.entries();

console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]
  • mymap.keys()得到一个新对象,里面包含mymap的所有key
  • mymap.values()得到一个新对象,里面包含mymap的所有value

相关文章

网友评论

      本文标题:ES6-新增数据类型

      本文链接:https://www.haomeiwen.com/subject/ytoujhtx.html