我最近了解了一個新的 Javascript 功能(私有實體欄位),它允許您在使用 ES6 類時將某些物件屬性或方法設為私有。所以你不能使用 object.property 或 object property = value 來查看或設定它們。但是,如果您只是將物件本身記錄到控制臺,它將向您顯示所有屬性,包括所謂的私有欄位。
Javascript 也已經阻止子類能夠查看或編輯資訊。它還阻止使用 Object.entries、Object.keys 和 Object.values 讀取這些值。所以我的問題是我如何報告這個或可能幫助在較新版本的 Javascript 中實作。
我知道你們中的很多人可能都認為不應該在瀏覽器中內嵌敏感資訊,但是為什么首先要有私有類功能。
我個人可以想到您可能想要隱藏可能在幕后處理的資訊的情況。就像您未加密或某種需要時間在后端處理的演算法一樣,因此您只想運行一次。但是,您需要回傳多個功能的資訊,因此您希望將其存盤在客戶端。同時,盡管您不希望客戶端能夠看到該資訊。
示例:資訊在控制臺中是可讀的。編輯:(您可能需要將代碼段復制并粘貼到單獨的 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.
uj5u.com熱心網友回復:
私有方法和屬性不用于隱藏敏感資料。
它用于向使用它的開發人員隱藏某些屬性或方法。這對于隱藏內部變數和方法以防止覆寫或讀取很有用。
在封裝中查看更多資訊。
然而,JavaScript 沒有私有欄位。JS 開發人員_通常會使用前導來表示某個變數或方法僅供內部使用。但是,它不限制對它的訪問。
new#是一個訪問修飾符(類似于private在 Java 中),它在語法級別實作私有欄位,而不是將_.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/386141.html
標籤:javascript 班级 私人的
