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日
下一篇 2020年9月4日

相关推荐

  • 1.6JavaScript语言的常量(Constant)

    1.常量声明 常量在赋值后不可以通过重新赋值改变其值,然而,对象被赋值为常量后,改变其属性是可以的。 2.常量分类 2.1全局常量 名称 修饰符 全局常量 —————— 2.2成员常量 名称 修饰符 类常量 —————— 2.3局部常量 名称 修饰符 局部常量 ——————

  • 2.1JavaScript语言的ES6 Module

    1.目录结构 模块就是一个以 .js 扩展名结尾的文件。 与 <script type=”module”> 关联或通过 import 语句导入或通过 export 语句导出的 JavaScript 文件都会被认为是模块文件。 在以下示例中,模块文件为 main.js、canvas.js、square.js。…

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

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

发表回复

登录后才能评论