js数据类型

57 阅读1分钟

1.js数据类型

基本数据类型:string,number,boolean,undefined, null, symbol, bigint

引用数据类型:Object array, map, set, weakmap, weakset, regexp, function, date等

ES6常用但被忽略的方法(第三弹Symbol、Set 和 Map ) - 掘金 (juejin.cn)

weakmap,weakset

  • 最重要的区别是,WeakMap 不会阻止在没有对键的引用时对键进行垃圾收集。 1、WeakMap只接受对象作为key,如果设置其他类型的数据作为key,会报错。 2、WeakMap的key所引用的对象都是弱引用,只要对象的其他引用被删除,垃圾回收机制就会释放该对象占用的内存,从而避免内存泄漏。 3、由于WeakMap的成员随时可能被垃圾回收机制回收,成员的数量不稳定,所以没有size属性。 4、没有clear()方法/map有 5、不能遍历/map有forEach,keys,entries

  • WeakSet 的成员只能是对象(null除外),而不能是其他类型的值。%%WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet之中%%

symbol作为属性名

  • Symbol 作为属性名,遍历对象的时候,该属性不会出现在for...infor...of循环中,也不会被Object.keys()Object.getOwnPropertyNames()(包括不可枚举属性)、JSON.stringify()返回

  • Object.getOwnPropertySymbols()在给定对象自身上找到的所有 Symbol 属性的数组,可获取自身所有Symbol属性,包括不可枚举的Symbol属性

  • Reflect.ownKeys() 方法返回一个由目标对象自身的属性键组成的数组。它的返回值相等于Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))