目录简介为什么这个数据类型会起作用?如果想使用toString方法又怕和原来的冲突,可以使用Symbol作为更合适的私有属性,因为普通遍历是访问不到的目前最重要的功能是给对象添加一个唯一的属性名并使用符号取值。ES6-ES10LearningLayoutIntroduction一种新的原始数据类型,js的基础数据类型。**没那么深入,先简单记一下。为什么你有这种数据类型?之前在不同文件中对同一个变量进行操作时,会产生污染。因此,为了解决这个问题,约定俗成的将文件名添加到属性名中。Function如果想使用toString方法,又怕和原来的冲突,可以使用Symbolconstobj={[Symbol.toStringTag]:'XObject'}console.log(obj.toString())//[objectXObject]更适合私有使用的属性,因为普通遍历是访问不到的constobj1={[Symbol()]:'symbolvalue',foo:'normalvalue'}for(letkeyinobj1){key)//foo}console.log(Object.keys(obj1))//['foo']console.log(JSON.stringify(obj1))//{"foo":"normalvalue"}//使用下面的方法,可以获取交易品种的属性名.jsconst缓存={}//jscache['foo']=123//b.jscache['foo']=234console.log(cache)//{foo:234}//===================================================//a.jscache['a_foo']=123//b.jscache['b_foo']=234console.log(cache)//{a_foo:123,b_foo:234}usesymbol//创建一个符号类型数据consts=Symbol()console.log(s)//Symbol()console.log(typeofs)//symbolconsole.log(Symbol()===Symbol())//虚假的唯一数据//我们可以添加描述文本console.log(Symbol('foo'))//Symbol(foo)console.log(Symbol('bar'))//Symbol(bar)//对象的属性名可以是symbol类型也可以是字符串类型//a.jsconstname=Symbol()constperson={[name]:'xm',say(){console.log(this[name])}}//b.jsperson.say()//有一个for方法获取xm的值consts1=Symbol.for('foo')consts2=Symbol.for('foo')console.log(s1===s2)//true//需要注意的是for对应的是字符串,所以true和'true'的效果是同样console.log(Symbol.for(true)===Symbol.for('true'))//trueJS八种数据类型:Number,String,Boolean,Null,undefined,object,symbol,bigIntJS七种基本数据类型:Number,String,Boolean,Null,undefined,symbol,bigIntES6-ES10学习布局
