ES6学习——集合(Collections):WeakMap 应用示例
来源:互联网 发布:南宁智尚网络骗局 编辑:程序博客网 时间:2024/06/07 19:53
这里看一下如何利用weakset实现class属性的私有化:
var Person = (function() { var private = new WeakMap(); function Person(name) { var privateProperties = { name: name }; private.set(this, privateProperties); } Person.prototype.getName = function() { return private.get(this).name; }; return Person;}());var p = new Person('John');print('Person 4 name: ' + p.getName());delete p.name;print('Person 4 name: ' + p.getName() + ' — stays private.');print('Person 4 properties: ' + Object.getOwnPropertyNames(p));
这样实现起来确实有点复杂,但看起来比较正规。而且这个场合正是weakset发挥作用的场景,因为weakset是弱引用,不会影响垃圾收集。
下面还有个例子是模拟java中compareTo的实现,在数组排序的时候可以使用:
var Person = (function() { var private = new WeakMap(); function Person(name) { var privateProperties = { name: name }; private.set(this, privateProperties); } Person.prototype.compareTo = function(other) { var thisName = private.get(this).name; var otherName = private.get(other).name; return thisName.localeCompare(otherName); }; Person.prototype.toString = function() { return private.get(this).name; }; return Person;}());var people = [ new Person('John'), new Person('Jane'), new Person('Jim')];people.sort(function(first, second) { return first.compareTo(second);});print('Sorted people: ' + people.join(', '));
*以上代码引自:https://curiosity-driven.org/private-properties-in-javascript
0 0
- ES6学习——集合(Collections):WeakMap 应用示例
- ES6学习——集合(Collections):WeakMap
- ES6学习——集合(Collections):Map 应用示例
- ES6学习——集合(Collections):Set 应用示例
- ES6学习——集合(Collections):Map API
- ES6学习——集合(Collections):Set API
- ES6学习——集合(Collections):WeakSet
- ES6学习——集合(Collections):Typed Arrays
- ES6学习——Promises:应用示例
- ES6学习——生成器(Generators):生成器应用示例
- 从零开始学_JavaScript_系列(45)——ES6新增数据结构:Map和WeakMap
- ES6学习——元数据(meta)编程:代理(Proxies)应用示例
- ES6学习——元数据(meta)编程:反射(Reflect)应用示例
- ES6学习——迭代器(Iterators):迭代器接口应用示例
- ES6详解四: WeakMap
- es6 map和 weakmap
- underscore学习笔记—集合函数/collections(一)
- underscore学习笔记—集合函数/collections(二)
- Opencv2.4.9 + vs2013单次配置和永久配置
- Spring容器初始化过程
- Zedboard---实验七秒计数
- 04-树5 Root of AVL Tree (25分)
- 67-套接字超时(select)
- ES6学习——集合(Collections):WeakMap 应用示例
- docker
- Java基础学习总结(101)——Junit5抢鲜看
- RecyclerView基础介绍
- php学习笔记一基本配置
- 存储之IP SAN(ISCSI)
- Bootstrap的目录结构
- 你真的会使用枚举么
- HDU 5375 Gray code