Note
ECMAScript6
// символы не видимы для циклов
let s = Symbol('my_symbol');
let o = {};
o[s] = 's'
Object.keys(o);
// []
o.s
// error
o[s]
// 's'
Symbol('1') == Symbol('1')
// false
Symbol.for('1') == Symbol.for('1')
// true
Symbol
()var s = Symbol();
typeof s;
// 'symbol'
try {
let s = new Symbol();
} catch (e) {
// Symbol is not a constructor
}
Symbol.
hasInstance
Symbol.
isContcatSpreadable
Symbol.
iterator
Символ для реализации интерфейса итератора
class Users {
constructor(users) {
this.users = users;
}
[Symbol.iterator]() {
let i = 0;
let users = this.users;
return {
next() {
if (i < users.length) {
return {
done: false,
value: users[i++],
};
}
return {
done: true,
}
}
}
}
}
let users = Users([...])
users_iterator = users[Symbol.iterator];
users_iterator.next();
for (let user of users) {
...
}
[...users]
// [...]
Symbol.
match
Symbol.
prototype
Symbol.
replace
Symbol.
search
Символ для реализации интерфейса поиска
class Product {
constructor(type) {
this.type = type;
}
[Symbol.search](string) {
return string.indexOf(this.type) >= 0 ? 'FOUND': 'NOT_FOUND'
}
}
let pr = Product('soap');
pr[Symbol.search]('barsoap');
// FOUND
'barsoap'.search(pr);
// FOUND
'shampoo'.search(pr);
// NOT_FOUND
Symbol.
species
Symbol.
split
Symbol.
toPrimitive
Symbol.
toStringTag
Symbol.
unscopables
for
(string)Создает символ глобально
Note
ECMAScript6