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 实现的类属性私有化的主要内容,如果未能解决你的问题,请参考以下文章

javascript 实例 静态 公共 私有

实现javaScript对象属性私有

java里一个私有的属性如何在其他类里面进行访问?

在 ES6 类中具有私有属性和方法 [重复]

javascript 实现内置的吸气和二传手,控制私有对象属性的访问

Typescript 中的私有继承等价物(仅包括或排除特定的类成员或属性)