返回
Symbol 入门:揭开ES6的神秘面纱
前端
2023-10-27 21:45:13
在ES6中,Symbol类型是一个全新的原始类型,它可以用来创建唯一且不可变的值。Symbol值通常用于作为对象的属性名或作为函数的参数,以便在不同的对象或函数之间进行区分。
1. 创建Symbol值
Symbol值可以通过Symbol()函数来创建,该函数不接受任何参数,直接调用即可。例如:
const symbol1 = Symbol();
const symbol2 = Symbol();
以上代码创建了两个Symbol值,symbol1和symbol2。这两个Symbol值是唯一的,这意味着它们不会与任何其他Symbol值相同,即使它们看起来相同。
2. 使用Symbol值
Symbol值可以通过点号运算符(.)来访问对象的属性。例如:
const obj = {
[symbol1]: 'foo',
[symbol2]: 'bar'
};
console.log(obj[symbol1]); // 输出:foo
console.log(obj[symbol2]); // 输出:bar
以上代码创建了一个对象obj,该对象有两个Symbol属性,symbol1和symbol2。这两个Symbol属性的值分别是'foo'和'bar'。我们可以通过点号运算符来访问这两个属性,并输出它们的值。
Symbol值也可以作为函数的参数来使用。例如:
function func(symbol) {
console.log(symbol);
}
func(symbol1); // 输出:Symbol(Symbol.iterator)
以上代码创建了一个函数func,该函数接受一个Symbol参数。当我们调用func函数时,我们将symbol1作为参数传递给它。函数func输出symbol1的值,即Symbol(Symbol.iterator)。
3. Symbol的注意事项
Symbol值有一些需要注意的地方:
- Symbol值不是对象,无法为其添加属性。
- Symbol值不能与其他类型的值进行运算,会报错。但是,Symbol值可以与其他Symbol值进行比较,使用严格相等运算符(===)和不严格相等运算符(!==)。
- Symbol值不能用作对象的属性名,只能用作对象的符。
- Symbol值不能用作函数的参数,只能用作函数的返回值。
4. 结论
Symbol类型是ES6中一个非常有用的新类型,它可以用来创建唯一且不可变的值。Symbol值通常用于作为对象的属性名或作为函数的参数,以便在不同的对象或函数之间进行区分。