Код IT
← Каталог

Работа с объектами и прототипами — Symbol

Фрагмент из «Работа с объектами и прототипами»: Symbol.

JavaScript main.js
const id = Symbol("id");
const name = Symbol("name");

const user = {
    [id]: 12345,
    [name]: "Алексей",
    age: 30
};

console.log(user[id]); // 12345
console.log(user[name]); // "Алексей"
console.log(user.age); // 30

// Символьные свойства не видны в обычных циклах
for (let key in user) {
    console.log(key); // только "age"
}

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

// Получение символьных ключей
console.log(Object.getOwnPropertySymbols(user)); // [Symbol(id), Symbol(name)]

// Получение всех ключей
const allKeys = [...Object.getOwnPropertyNames(user), ...Object.getOwnPropertySymbols(user)];
console.log(allKeys); // ["age", Symbol(id), Symbol(name)]
const id = Symbol("id");
const name = Symbol("name");

const user = {
    [id]: 12345,
    [name]: "Алексей",
    age: 30
};

console.log(user[id]); // 12345
console.log(user[name]); // "Алексей"
console.log(user.age); // 30

// Символьные свойства не видны в обычных циклах
for (let key in user) {
    console.log(key); // только "age"
}

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

// Получение символьных ключей
console.log(Object.getOwnPropertySymbols(user)); // [Symbol(id), Symbol(name)]

// Получение всех ключей
const allKeys = [...Object.getOwnPropertyNames(user), ...Object.getOwnPropertySymbols(user)];
console.log(allKeys); // ["age", Symbol(id), Symbol(name)]