米鼠商城

多快好省,买软件就上米鼠网

最新项目

人才服务

靠谱的IT人才垂直招聘平台

JavaScript Symbol对象

  • darkalex
  • 5
  • 2020-07-30 09:27

精选30+云产品,助力企业轻松上云!>>>

JavaScript Symbol对象

Symbol

  Symbol对象是es6中新引进的一种数据类型,它的作用非常简单,就是用于防止属性名冲突而产生。

  Symbol的最大特点就是值是具有唯一性,这代表使用Symbol类型的值能做独一无二的一些事情。

  此外,Symbol没有构造函数,这使得我们不能new它,直接使用即可。

 

基础知识

声明Symbol

  使用Symbol()声明一个独一无二的值。

 

 

描述信息

  Symbol的值在声明时添加一段描述信息。

  使用description属性可查看描述信息。

 

  注意:即使两个Symbol的描述信息是一样的也不会有什么问题,因为它仅仅是描述信息而已。

 

 

Symbol.for

  使用Symbol()来创建值不会进行记录,所以无论值看起来是否一样都不会引用同一份内存地址。

  而使用Symbol.for()来创建值则会进行记录,下次再创建相同的值时会直接引用记录的内存地址。

 

 

 

 

 

 

 

Symbol.keyFor

  用于返回由Symbol.for()创建的值的描述信息。

  如果值没有描述信息则返回undefined

 

  当然,我们也可以使用description属性来获取描述信息,二者皆可。

 

 

实际应用

对象属性

  Js中的对象(键)如果直接声明就会变成String类型,这在某些程度上可能会引起对象属性冲突问题。

  对象的键最好是唯一的,Symbol类型的值无疑是最好的选择。

 

  当我们给想对象的键设置为Symbol类型的值的时候需要注意2点问题。

 

  Symbol声明和访问使用 [](变量)形式操作

  不能使用 . 语法因为 .语法是操作字符串属性的

 

 

对象遍历

  Symbol类型值不能被 for/infor/of 遍历操作找到。

  以下示例可以看出,找不到两个Symbol类型的键。

 

 

  可以使用 Object.getOwnPropertySymbols 获取所有Symbol属性(键)。

  注意,这是仅仅获取Symbol的属性(键)。

 

  也可以使用 Reflect.ownKeys(obj) 获取所有属性(键)包括Symbol类型的属性。

 

私有属性

  我们可以使用Symbol不能被for/in以及for/of访问的特性,为类制作私有属性以及提供访问接口。

 

 



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。



如有侵权请联系邮箱(service@misuland.com)

猜你喜欢

评论留言