2.3JavaScript原始类型之符号(Symbol)

一个符号实例用于表示一个唯一的标识符。

1.创建符号实例

可以将 Symbol() 函数用作构造函数创建符号实例。

注意:符号实例没有字面量创建方式。

注意:Symbol() 函数不可以用作类构造函数与 new 关键字一起使用创建符号实例。

//Symbol()构造函数创建方式(不传递字符串实参)
let sym = Symbol();

//Symbol()构造函数创建方式(传递字符串实参)
let sym = Symbol('foo');

Symbol() 构造函数可选地接受一个字符串实参,字符串实参仅仅作为对符号实例的描述,将来可以通过这个字符串实参来调试代码,不影响任何事情。

Symbol() 构造函数的返回值就是一个符号实例。

无论不传递一个字符串实参、传递不同的字符串实参、传递相同的字符串实参给 Symbol()构造函数,Symbol() 构造函数返回的符号实例是唯一的,永远不会相同。

let genericSymbol = Symbol();
let otherGenericSymbol = Symbol();

let fooSymbol = Symbol('foo');
let otherFooSymbol = Symbol('foo');

console.log(genericSymbol == otherGenericSymbol);
console.log(fooSymbol == otherFooSymbol);

//都输出
false
false

2.示例

注意:符号实例只可以作为可计算名存在。

//用于对象字面量的属性名
//语法错误
let o = {
  Symbol('foo'): 'foo val'
};

//语法正确
let s = Symbol('foo');

let o = {
  [s]: 'foo val'
};

console.log(o[s]);
//输出
foo val

o[s] = 'foo val2';
console.log(o[s]);
//输出
foo val2

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/javascript/javascriptlang/20867.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2020年9月2日
下一篇 2020年9月4日

相关推荐

发表回复

登录后才能评论