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

JavaScript语言的对象是一组属性的无序集合,其中每个属性都有一个名字和一个值。在ES6之前,属性名可以是字符串和数字。但在ES6和之后的版本中,符号也可以作为属性名,并且符号创建的属性名是唯一的,可防止属性名称冲突的风险。

1.创建符号实例

//Symbol()函数创建方式(不带参数)
let sym = Symbol();

//Symbol()函数创建方式(带参数)
let sym = Symbol('foo');

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 s = Symbol('foo');
let o = {
  [s]: 'foo val'
};

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

(0)
上一篇 2020年9月2日 20:15
下一篇 2020年9月4日 02:13

相关推荐

  • 2.1JavaScript语言的ES6 Module

    每个文件本身都是模块,在文件中定义的类、变量、常量和函数对这个文件而言都是私有(private)的,除非它们被显式导出。另外,一个模块导出的值只有在显式导入它们的模块中才可以使用。 虽然模块中可同时存在命名导出和默认导出,但作为最佳实践只使用命名导出和默认导出中的一种。 当使用场景为需要导出多个值的时候,只使用命名导出…

  • 2.6JavaScript引用类型之映射(Map)

    1.映射声明 与对象只能使用字符串、数字或符号作为键不同,映射可以使用任何 JavaScript 数据类型作为键。与对象一样,映射的值可以是任何数据类型。 2.访问映射 3.获取映射长度

  • 2.5JavaScript引用类型之数组(Array)

    数组是一种数据结构。 1.数组声明 2.稀疏(Sparse)数组 如果逗号之间形成了间隙(hole),我们可以将带有间隙的数组叫做稀疏(Sparse)数组,反之,不带间隙的数组叫做紧凑(Dense)数组。 3.多维数组 数组是可以嵌套的, 这就意味着一个数组可以作为一个元素被包含在另外一个数组里面。利用JavaScri…

发表回复

登录后才能评论