javascript私有方法中的symbol和weakmap有什么区别?

javascript私有方法中的symbol和weakmap有什么区别?,javascript,private-members,Javascript,Private Members,我看到使用符号和弱映射在对象内创建私有成员。它们相似吗?它们都指定给对象外部的a属性,然后在对象内部被调用 const _length=Symbol() or const _length=new Weakmap() 我很容易理解symbol(),但是我没有得到weakmap。在这种情况下,我应该使用weakmap,还是可以一直使用symbol?以下是这些技术的完整示例: constfoo=(()=>{ 常量长度=符号(“长度”); 返回类Foo{ [_长度]=0; 获取长度(){返回此

我看到使用符号和弱映射在对象内创建私有成员。它们相似吗?它们都指定给对象外部的a属性,然后在对象内部被调用

   const _length=Symbol() or const _length=new Weakmap()

我很容易理解symbol(),但是我没有得到weakmap。在这种情况下,我应该使用weakmap,还是可以一直使用symbol?

以下是这些技术的完整示例:

constfoo=(()=>{
常量长度=符号(“长度”);
返回类Foo{
[_长度]=0;
获取长度(){返回此[_length];}
设置长度(值){this[_length]=value;}
}
})();
常数条=新的Foo();

控制台日志(条长)使用其中一种方法的优点和缺点是什么?什么时候一种方法优于另一种方法?@Sukima理想情况下,我建议使用private fields语法和with,默认情况下,它会将您的代码转换为我上面展示的ES6
WeakMap
方法。