本文操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
JavaScript的基本数据类型有:(1)Undefined、(2)Null、(3)Boolean、(4)String、(5)Number、(6)Symbol、(7)Object。ES6 增加了Symbol类型,下面主要是讲Symbol类型的一些相关知识点。
Symbol的特性
1、实例是唯一且不可改变的;一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。
1 let id = Symbol("id");
登录后复制
2、数据类型的特点:唯一性,即使是用同一个变量生成的值也不相等。
1 let id1 = Symbol("id");2 let id2 = Symbol("id");3 console.log(id1 == id2); //false
登录后复制
3、数据类型的特点:隐藏性,for···in,object.keys() 不能访问。
1 let id = Symbol("id");2 let obj = {3 [id] : 'symbol' 4 }5 for ( let key in obj){6 console.log(obj[key]); //输出为空7 }
登录后复制
能够访问的方法:Object.getOwnPropertySymbols,会返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。
1 let id = Symbol("id");2 let obj = {3 [id] : 'symbol' 4 }5 let arr = Object.getOwnPropertySymbols(obj);6 console.log(arr) // [Symbol(id)]7 console.log(obj[arr[0]]) // 'symbol'
登录后复制
4、可多次使用同一个symbol值,官方提供了全局注册并登记的方法:Symbol.for()
let name1 = Symbol.for("name"); // 检测未创建后新建let name2 = Symbol.for("name"); // 检测已创建后返回console.log(name1 == name2); // true
登录后复制
通过这种方法就可以通过参数值获取到全局的symbol对象了,反之,可以通过Symbol.keyFor()获取到参数值。
let name1 = Symbol.for("name"); let name2 = Symbol.for("name"); console.log(Symbol.keyFor("name1")); // 'name'console.log(Symbol.keyFor("name2")); // 'name'
登录后复制
5、instanceof 的结果为 false
let s = Symbol('foo'); console.log(s instanceof Symbol); // false
登录后复制
注意:在创建symbol类型数据 时的参数只是作为标识使用,所以 Symbol() 作为参数也是可以的。
【推荐学习:javascript高级教程】
以上就是不属于javascript的数据类型是什么的详细内容,更多请关注Work网其它相关文章!