如何对新的 JS 功能提出建议?
Posted
技术标签:
【中文标题】如何对新的 JS 功能提出建议?【英文标题】:How can I make a suggestion on a new JS Feature? 【发布时间】:2022-01-21 06:36:33 【问题描述】:我最近了解了一个新的 javascript 功能(私有实例字段),它允许您在使用 ES6 类时将某些对象属性或方法设为私有。因此您无法使用 object.property 或 object property = value 查看或设置它们。但是,如果您只是将对象本身记录到控制台,它将向您显示所有属性,包括所谓的私有字段。
Javascript 也已经阻止子类查看或编辑信息。它还阻止使用 Object.entries、Object.keys 和 Object.values 读取这些值。所以我的问题是如何报告这一点,或者如何帮助在较新版本的 Javascript 中实现。
我知道你们中的很多人可能都认为不应该在浏览器中内嵌敏感信息,但是为什么要首先使用私有类功能。
我个人可以想到您可能希望隐藏可能在幕后处理的信息的情况。就像您取消加密或某种需要时间在后端处理的算法一样,因此您只想运行一次。但是,您需要为多个功能返回的信息,因此您希望将其存储在客户端。同时,虽然您不希望客户端能够看到该信息。
示例:信息在控制台中是可读的。编辑:(您可能需要将 sn-p 复制并粘贴到单独的 js 文件中或在浏览器中运行它才能查看问题。)
对象可见
class Account
#pin;
constructor(owner, pin)
this.owner = owner;
this.#pin = pin;
;
const acc = new Account('John Doe', 1234);
console.log(acc); //Shows you pin in object.
虽然财产是私有的
class Account
#pin;
constructor(owner, pin)
this.owner = owner;
this.#pin = pin;
;
const acc = new Account('John Doe', 1234);
console.log(acc.#pin); //Won't allow you to see pin.
【问题讨论】:
私有类字段,就像其他面向对象语言中的私有字段一样,旨在帮助您减少错误并编写更好的代码。它们不用于存储敏感信息或控制对数据的访问。 【参考方案1】:私有方法和属性不用于隐藏敏感数据。
它用于对使用它的开发人员隐藏某些属性或方法。这对于隐藏内部变量和方法以防止被覆盖或读取很有用。
在Encapsulation查看更多信息。
JavaScript,但是没有私有字段。 JS 开发人员通常会使用前导 _
来表示某个变量或方法仅供内部使用。但是,它并不限制对它的访问。
新的#
是一个访问修饰符(类似于Java 中的private
),它在语法级别实现私有字段,而不是在_
前导的解决方法。
【讨论】:
以上是关于如何对新的 JS 功能提出建议?的主要内容,如果未能解决你的问题,请参考以下文章