Javascript 实现的类属性私有化
Posted 倔强新手猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript 实现的类属性私有化相关的知识,希望对你有一定的参考价值。
ES6 中实现对象编程 定义类方法
class A{ constructor(){ //构造函数 用来定义初始化数据 } }
非私有化属性直接定义即可,例如
class A{ constructor(){ //构造函数 用来定义初始化数据 this.publicAttrbute = {}; } }
这样在实例化类之后即可进行访问属性
var a = new A(); console.log(a.publicAttrbute);
当想要定义私有化属性的时候,即不想在使其在外部可以直接访问或定义可以用WeakMap来实现
const privateAttrbute = new WeakMap(); class A{ constructor(){ //构造函数 用来定义初始化数据 privateAttrbute.set(this, {}) //初始化私有属性 } }
WeakMap散列的KEY值是对象,所以在外部无法进行直接访问与设置,在内部可以用set,get来提供获取与设置接口
const privateAttrbute = new WeakMap(); class A{ constructor(){ //构造函数 用来定义初始化数据 privateAttrbute.set(this, {}) //初始化私有属性 } get private(){ return privateAttrbute.get(this); } set private(value){ privateAttribute.set(this.value); } demo(){ this.private[‘test‘] = 1; } }
使用export default 提供
export default (function(){ const privateAttrbute = new WeakMap(); class A{ constructor(){ //构造函数 用来定义初始化数据 privateAttrbute.set(this, {}) //初始化私有属性 } get private(){ return privateAttrbute.get(this); } set private(value){ privateAttribute.set(this.value); } demo(){ this.private[‘test‘] = 1; } } return A; })()
以上是关于Javascript 实现的类属性私有化的主要内容,如果未能解决你的问题,请参考以下文章