有没有办法冻结ES6地图?

铁美

我正在寻找冻结本机ES6地图的方法。

Object.freeze而且Object.seal似乎不起作用:

let myMap = new Map([["key1", "value1"]]);
// Map { 'key1' => 'value1' }

Object.freeze(myMap);
Object.seal(myMap);

myMap.set("key2", "value2");
// Map { 'key1' => 'value1', 'key2' => 'value2' }

这是预期的行为,因为冻结会冻结objectsmaps否的属性,objects或者这可能是错误/尚未实现吗?

是的,我知道,我可能应该使用Immutable.js,但是有什么方法可以使用本机ES6 Maps做到这一点?

铁美

@loganfsmyth,您的回答给了我一个主意,这是怎么回事:

function freezeMap(myMap){

  if(myMap instanceof Map) {

    myMap.set = function(key){
      throw('Can\'t add property ' + key + ', map is not extensible');
    };

    myMap.delete = function(key){
      throw('Can\'t delete property ' + key + ', map is frozen');
    };

    myMap.clear = function(){
      throw('Can\'t clear map, map is frozen');
    };
  }

  Object.freeze(myMap);
}

这对我来说非常适合:)


在评论中更新了@Bergi的观点:

var mapSet = function(key){
  throw('Can\'t add property ' + key + ', map is not extensible');
};

var mapDelete = function(key){
  throw('Can\'t delete property ' + key + ', map is frozen');
};

var mapClear = function(){
  throw('Can\'t clear map, map is frozen');
};

function freezeMap(myMap){

  myMap.set = mapSet;
  myMap.delete = mapDelete;
  myMap.clear = mapClear;

  Object.freeze(myMap);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法用React JSX释放ES6的全部功能?

来自分类Dev

使用 Webpack 捆绑 ES6 类。有没有办法提升扩展类?

来自分类Dev

有没有办法在javascript es6中更改'this'的css属性?

来自分类Dev

有没有办法在 C++ 中保存冻结的张量流图?

来自分类Dev

es6地图渲染失败,控制台中没有错误

来自分类常见问题

有没有办法在vscode中打开ES6 / ES7语法支持?

来自分类Dev

有没有办法判断ES6承诺是否已兑现/拒绝/已解决?

来自分类Dev

有没有办法让算术运算符在Javascript ES6中使用getter和setter?

来自分类Dev

es6 导入。有没有办法在“泛型”中使用“命名空间”作为“类”?

来自分类Dev

有没有办法在 es6 过滤器或 lodash 中获得相同的结果?

来自分类Dev

有没有办法使地图对象重复?

来自分类Dev

有没有办法在本地缓存地图

来自分类Dev

有没有办法“懒洋洋地”阅读?

来自分类Dev

有没有办法使用 es6 和 react 类从 sqlite.run() 回调中获取“this.lastID”

来自分类Dev

有没有办法使地图的Clojure向量上的地图使用破坏性绑定?

来自分类Dev

有没有办法使地图的Clojure向量上的地图使用破坏性绑定?

来自分类Dev

反转ES6地图

来自分类Dev

有没有办法在R中制作漂亮的“流程图”或“线面积”图?

来自分类Dev

有没有办法在R中制作漂亮的“流程图”或“线面积”图?

来自分类Dev

有没有办法在模式中有条件地定义“必需”键?

来自分类Dev

Fortran:有没有办法有条件地使用模块?

来自分类Dev

VueJS-有没有办法有条件地应用过渡?

来自分类Dev

有没有办法有选择地应用此字符串函数?

来自分类Dev

有没有办法有条件地翻转HStack内容的顺序?

来自分类Dev

有没有办法针对iOS 13有条件地使用@StateObject?

来自分类Dev

有没有办法有条件地运行脚本?

来自分类Dev

有没有办法始终将Google Maps Marker固定到其地图的中心?

来自分类Dev

有没有办法在网络上限制谷歌地图标记?

来自分类Dev

有没有办法在地图上的反应传单中显示下拉菜单

Related 相关文章

  1. 1

    有没有办法用React JSX释放ES6的全部功能?

  2. 2

    使用 Webpack 捆绑 ES6 类。有没有办法提升扩展类?

  3. 3

    有没有办法在javascript es6中更改'this'的css属性?

  4. 4

    有没有办法在 C++ 中保存冻结的张量流图?

  5. 5

    es6地图渲染失败,控制台中没有错误

  6. 6

    有没有办法在vscode中打开ES6 / ES7语法支持?

  7. 7

    有没有办法判断ES6承诺是否已兑现/拒绝/已解决?

  8. 8

    有没有办法让算术运算符在Javascript ES6中使用getter和setter?

  9. 9

    es6 导入。有没有办法在“泛型”中使用“命名空间”作为“类”?

  10. 10

    有没有办法在 es6 过滤器或 lodash 中获得相同的结果?

  11. 11

    有没有办法使地图对象重复?

  12. 12

    有没有办法在本地缓存地图

  13. 13

    有没有办法“懒洋洋地”阅读?

  14. 14

    有没有办法使用 es6 和 react 类从 sqlite.run() 回调中获取“this.lastID”

  15. 15

    有没有办法使地图的Clojure向量上的地图使用破坏性绑定?

  16. 16

    有没有办法使地图的Clojure向量上的地图使用破坏性绑定?

  17. 17

    反转ES6地图

  18. 18

    有没有办法在R中制作漂亮的“流程图”或“线面积”图?

  19. 19

    有没有办法在R中制作漂亮的“流程图”或“线面积”图?

  20. 20

    有没有办法在模式中有条件地定义“必需”键?

  21. 21

    Fortran:有没有办法有条件地使用模块?

  22. 22

    VueJS-有没有办法有条件地应用过渡?

  23. 23

    有没有办法有选择地应用此字符串函数?

  24. 24

    有没有办法有条件地翻转HStack内容的顺序?

  25. 25

    有没有办法针对iOS 13有条件地使用@StateObject?

  26. 26

    有没有办法有条件地运行脚本?

  27. 27

    有没有办法始终将Google Maps Marker固定到其地图的中心?

  28. 28

    有没有办法在网络上限制谷歌地图标记?

  29. 29

    有没有办法在地图上的反应传单中显示下拉菜单

热门标签

归档