首頁 > web前端 > js教程 > Javascript 中的符號及其範例

Javascript 中的符號及其範例

Susan Sarandon
發布: 2024-12-03 19:16:10
原創
568 人瀏覽過

Symbol in Javascript with Example

Symbol 是內建對象,其建構子傳回一個 symbol 基元 - 也稱為 Symbol 值 Symbol  -保證是獨一無二的。符號通常用於向物件添加唯一的屬性鍵,這些屬性鍵不會與任何其他程式碼可能添加到該物件的鍵發生衝突,並且對於其他程式碼通常用於存取該物件的任何機制都是隱藏的。這實現了一種弱封裝形式,或一種弱形式的訊息隱藏。

範例:使用符號作為唯一屬性鍵

javascript
Copy code
// Create unique symbols
const id = Symbol('id');
const name = Symbol('name');

// Create an object with symbol-based properties
const user = {
    [id]: 101,
    [name]: 'Alice',
    age: 25
};

// Access the symbol properties
console.log(user[id]); // 101
console.log(user[name]); // "Alice"

// Add another property using a symbol
const email = Symbol('email');
user[email] = 'alice@example.com';

console.log(user[email]); // "alice@example.com"

// Symbols are not enumerable in for...in loops or Object.keys
for (const key in user) {
    console.log(key); // Only "age" is logged
}

console.log(Object.keys(user)); // ["age"]

// You can still access all properties if you know the symbol keys
console.log(Object.getOwnPropertySymbols(user)); // [Symbol(id), Symbol(name), Symbol(email)]

登入後複製

範例:使用 Symbol.iterator 使物件可迭代

javascript
Copy code
const collection = {
    items: ['apple', 'banana', 'cherry'],
    [Symbol.iterator]() {
        let index = 0;
        const items = this.items;
        return {
            next() {
                if (index < items.length) {
                    return { value: items[index++], done: false };
                } else {
                    return { done: true };
                }
            }
        };
    }
};

// Iterate over the object
for (const item of collection) {
    console.log(item);
}
// Output:
// apple
// banana
// cherry

登入後複製
此範例展示了 Symbol.iterator 如何允許使用 for...of 迭代自訂物件。

流行的 npm 庫中可用的符號:

範例:在流行的 npm 庫中使用符號

Symbol 使用的一個著名範例是 Express.js 框架,這是一個廣泛使用的 Node.js Web 應用程式框架。在 Express.js 中,Symbol 用於定義唯一的屬性鍵,防止與使用者定義的屬性發生潛在衝突。

來自 Express.js 的程式碼片段:

javascript
Copy code
// In Express.js, a symbol is used to define a unique property key
const app = express();
app[Symbol('router')] = router;

登入後複製
在此程式碼片段中,Symbol('router') 會建立一個唯一的符號,用作應用程式物件的屬性鍵。這種方法確保路由器屬性是獨特的,並且不會幹擾可能添加到應用程式物件的其他屬性。

在庫中使用符號的好處:

  • 唯一性:符號保證屬性鍵是唯一的,降低意外覆蓋的風險。
  • 不變性:一旦創建,符號就無法更改,提供穩定的識別符。
  • 不可枚舉性: 由符號鍵入的屬性在循環中不可枚舉,這對於不應該公開的內部屬性來說是有益的。

以上是Javascript 中的符號及其範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板