什么网站可以做海报,做直播网站要多大带宽,泰安吧贴吧,想做个网站 怎么做1、介绍
ES5 的对象属性名都是字符串#xff0c;这容易造成属性名的冲突。比如#xff0c;你使用了一个他人提供的对象#xff0c;但又想为这个对象添加新的方法#xff08;mixin 模式#xff09;#xff0c;新方法的名字就有可能与现有方法产生冲突。如果有一种机制这容易造成属性名的冲突。比如你使用了一个他人提供的对象但又想为这个对象添加新的方法mixin 模式新方法的名字就有可能与现有方法产生冲突。如果有一种机制保证每个属性的名字都是独一无二的就好了这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。
ES6 引入了一种新的原始数据类型Symbol表示独一无二的值。它属于 JavaScript 语言的原生数据类型之一其他数据类型是undefined、null、布尔值Boolean、字符串String、数值Number、大整数BigInt、对象Object。
Symbol 值通过Symbol()函数生成。这就是说对象的属性名现在可以有两种类型一种是原来就有的字符串另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型就都是独一无二的可以保证不会与其他属性名产生冲突。
let name Symbol();typeof name
// symbol
变量name就是一个独一无二的值。typeof运算符的结果表明变量name是 Symbol 数据类型而不是字符串之类的其他类型。 所以不会出现重名的可能。 Symbol 它是一种类似于字符串的数据类型。 let s1 Symbol(foo);
let s2 Symbol(bar);s1 // Symbol(foo)
s2 // Symbol(bar)s1.toString() // Symbol(foo)
s2.toString() // Symbol(bar)
s1和s2是两个 Symbol 值。如果不加参数它们在控制台的输出都是Symbol()不利于区分。有了参数以后就等于为它们加上了描述输出的时候就能够分清到底是哪一个值。
如果 Symbol 的参数是一个对象就会调用该对象的toString()方法将其转为字符串然后才生成一个 Symbol 值。