Symbol数据类型,js基本类型symbol

  Symbol数据类型,js基本类型symbol

  本文将带您了解ES6的新数据类型:Symbol,并讨论符号类型的声明和用法。希望对你有帮助!

  符号是一种新的原始数据类型,意味着唯一。是javascript中的第七种数据类型。另外六个是:undefined、null、String、Number、Object

  

声明方式

  符号值由符号函数生成。对象的属性名可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。属性名属于符号类型,都是唯一的,可以保证不会和其他属性名冲突。【相关推荐:javascript学习教程】

  设s1=符号()

  设s2=Symbol()

  console.log(s1)

  //符号()

  console.log(s2)

  //符号()

  console.log(s1===s2)

  //假

  //Symbol函数可以将字符串作为参数来表示符号实例的描述。

  让s1=符号( xxx )

  设s2=符号( hhh )

  console.log(s1)

  //符号(xxx)

  console.log(s2)

  //符号(hhh)

  console.log(s1===s2)

  //false Copy code

Symbol.for()全局定义Symbol

   Symbol . for()接受一个字符串作为参数,然后搜索以该参数为名称的符号值。如果是,则返回该符号值;否则,使用该字符串的名称创建一个新的符号值,并对其进行全局注册。

  设s1=Symbol.for(xxx )

  设s2=Symbol.for(xxx )

  console.log(s1===s2) //true

  函数foo(){

  return Symbol.for(hello )

  }

  const x=foo()

  const y=Symbol.for(hello )

  console . log(x==y)//true

Symbol.keyFor()

   symbol . key for()方法返回注册的符号类型值的密钥。

  const s1=Symbol(foo )

  console . log(symbol . key for(S1))//未定义

  const s2=Symbol.for(foo )

  console . log(symbol . key for(S2))//foo

应用场景

  

作为属性名

  由于符号值都不相等,也就是说Symbol 值可以作为标识符,用在对象的属性名,所以可以保证不会出现同名的属性。当一个对象由多个模块组成时,这对于防止一个键被意外重写或覆盖非常有用。

  常数等级={

  张:{地址: QQ ,电话: 111},

  李:{地址: aaa ,电话: 222},

  李:{地址: sss ,电话: 333},

  }

  console.log(等级)

  //张三:{地址: QQ ,电话: 111}李四:{地址: sss ,电话: 333}

  //对象的键值不能重复。如果有重复,下面的值将覆盖前面的值。

  //用Symbol求解,相当于一个唯一的字符串。

  Const stu1=Symbol(李四)

  Const stu2=Symbol(李四)

  console.log(stu1===stu2)

  //假

  常数等级={

  [stu 1]:{地址: aaa ,电话: 222},

  [stu 2]:{地址: sss ,电话: 333},

  }

  console.log(等级)

  //李四:{地址: sss ,电话: 222}李四:{地址: sss ,电话: 333}

  console.log(等级[stu1])

  //李四:{地址: sss ,电话: 222}

  console.log(等级[stu2])

  //李四:{地址: SSS ,电话: 333 }

属性遍历

   const sym=symbol( IMOOC )

  类别用户{

  构造者(姓名){

  this.name=name

  this[sym]=imooc.com

  }

  getName(){

  归还这个。把这个命名为[sym]

  }

  }

  const user=新用户( www )

  //中的方法//无法遍历Symbol属性,该属性是隐藏的。

  对于(让用户键入){

  console.log(key)//name

  }

  //Object.keys(obj)方法也不能遍历到Symbol属性。

  for(let key of object . keys(user)){

  console.log(key)//name

  }

  //object . getownpropertymodels(obj)只能获取symbol属性。

  for(let key of object . getownpropertymodals(user)){

  console.log(key)//Symbol(imooc)

  }

  //可以获取//Reflect.ownKeys(obj)对象的属性。

  for(let key of reflect . own keys(user)){

  console.log(键)

  //名称

  //符号(imooc)

  }

消除魔术字符串

  幻串是指在代码中多次出现的特定字符串或数值,与代码形成强耦合。风格好的代码应该尽量消除神奇的字符串,用一些含义明确的变量代替。

  函数getArea(shape) {

  让面积=0

  开关(形状){

  案例“三角形”:

  面积=1

  破裂

  case Circle :

  面积=2

  破裂

  }

  返回区域

  }

  console.log(getArea(三角形))

  //三角形和圆形是神奇的字符串。很多时候与代码形成“强耦合”,不利于后期的修改和维护。

  常量形状类型={

  三角形:符号(),

  圆形:符号()

  }

  函数getArea(shape) {

  让面积=0

  开关(形状){

  案例形状类型.三角形:

  面积=1

  破裂

  案例shapeType.circle:

  面积=2

  破裂

  }

  返回区域

  }

  console . log(get area(shape type . triangle))是前端白色。文章如有错误内容,请大家指教,讨论!

  【相关视频教程推荐:web前端】以上是javascript数据类型学习的符号类型的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: