不属于javascript的数据类型是什么-LMLPHP

本文操作环境: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网其它相关文章!

09-08 16:22