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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。