跳至主要内容

博文

目前显示的是标签为“JavaScript”的博文

JavaScript从零开始——数据类型(7)

  还记得之前提到过,目前在 JavaScript 里面,一共有7种数据类型;今天就来介绍这第7种,也是最新的数据类型—— Symbol 。 这个类型目前并没有合适的中文翻译,因为叫做标志或者标识都有其局限性,主要是感觉不够准确,故此这里就直接使用了它的英文名称。 1 概念 ES 5  的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法( mixin  模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是  ES 6  引入 Symbol 的原因。 ES 6  引入了一种新的原始数据类型 Symbol ,表示独一无二的值。它是  JavaScript  语言的第七种数据类型,前六种是: undefined 、 null 、布尔值( Boolean )、字符串( String )、数值( Number )、对象( Object )。 Symbol 值通过 Symbol 函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的  Symbol  类型。凡是属性名属于  Symbol  类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。 上面代码中,变量 s 就是一个独一无二的值。 typeof 运算符的结果,表明变量 s 是  Symbol  数据类型,而不是字符串之类的其他类型。 注意, Symbol 函数前不能使用 new 命令,否则会报错。这是因为生成的  Symbol  是一个原始类型的值,不是对象。也就是说,由于  Symbol  值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。 Symbol 函数可以接受一个字符串作为参数,表示对  Symbol  实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。 上面代码中, s1 和 s2 是两个  Symbol  值。如果不加参数,它们在控制台的输出都是 Symbol() ...