返回
ES6深入浅出(三)之Symbol/集合
前端
2023-09-20 12:34:33
欢迎来到ES6深入浅出系列文章的第三篇,今天我们将探讨Symbol和集合这两大重要特性。
Symbol
Symbol是一种新的原始类型,它允许您创建唯一的标识符,这些标识符不能被其他值(包括其他Symbol)重新分配。这使得它们非常适合用作对象的属性键,因为您可以确保没有其他对象拥有相同的属性键。
Symbol值可以使用Symbol()函数创建,也可以使用Symbol.for()函数创建。Symbol.for()函数允许您创建一个全局Symbol值,这意味着它可以在任何地方使用,即使它是在另一个脚本中创建的。
const symbol1 = Symbol();
const symbol2 = Symbol();
console.log(symbol1 === symbol2); // false
Symbol值也可以用作对象的属性键。
const obj = {
[symbol1]: 'foo',
[symbol2]: 'bar'
};
console.log(obj[symbol1]); // 'foo'
console.log(obj[symbol2]); // 'bar'
集合
集合是一种新的数据结构,它允许您存储唯一的值。与数组不同,集合中的值不能重复。
集合可以使用Set()函数创建。
const set = new Set();
set.add('foo');
set.add('bar');
set.add('baz');
console.log(set); // Set { 'foo', 'bar', 'baz' }
集合也可以使用数组作为参数创建。
const set = new Set(['foo', 'bar', 'baz']);
console.log(set); // Set { 'foo', 'bar', 'baz' }
集合中的值可以使用has()方法检查。
const set = new Set(['foo', 'bar', 'baz']);
console.log(set.has('foo')); // true
console.log(set.has('qux')); // false
集合中的值可以使用delete()方法删除。
const set = new Set(['foo', 'bar', 'baz']);
set.delete('foo');
console.log(set); // Set { 'bar', 'baz' }
集合中的值可以使用forEach()方法遍历。
const set = new Set(['foo', 'bar', 'baz']);
set.forEach((value) => {
console.log(value);
});
// 输出:
// foo
// bar
// baz
总结
Symbol和集合都是ES6中非常有用的特性。Symbol允许您创建唯一的标识符,而集合允许您存储唯一的值。这使得它们非常适合用于各种任务,例如:
- 创建对象的私有属性
- 实现缓存
- 创建集合
我希望这篇文章对您有所帮助。如果您有任何问题,请随时在评论中留言。