ES6 Symbol的介绍以及使用方法
Symbol
Symbol 是ES6新引入的一种基本数据类型 表示的是独一无二的值 是js里面第六种基本数据类型
基本数据类型 : string number boolean undefined null
typeof 的返回值 string number boolean undefined object function
特点
-
Symbol函数生成的数据 是独一无二的 即便参数一样 那么表示的值也不一样
console.log(Symbol("www") === Symbol("www")); //false console.log(Symbol() === Symbol()); //false
-
Symbol没有字面量的写法
-
是新增的一种数据类型 使用typeof检测 返回值是symbol
-
Symbol数据不能使用new关键字来创建
var s3 = new Symbol(); console.log(s3);// Symbol is not a constructor
-
一般我们在创建数据的时候 最好加一个参数便于区分
var s1 = Symbol("age"); var s2 = Symbol(); console.log(s1); console.log(s2); var obj = { a: "Tom", b: "boy", [s1]: 15 // 符号属性 }
-
如果和其他数据类型进行运算 就会报错
Object.get
ES6新增的方法 Object.get
var syb = Symbol("c");
var obj = {
a: "123",
b: "456",
[syb]: "789"
}
for(var key in obj) {
console.log(key); // a b 获取不到[syb]
}
console.log(Object.keys(obj)); //["a" , "b"] 获取不到[syb]
// ES6新增的方法 Object.get
console.log(Object.getOwnPropertyNames(obj));//["a" , "b"] 获取不到[syb]
console.log(Object.getOwnPropertySymbols(obj)); //[Symbol(c)]
var s = Object.getOwnPropertySymbols(obj);
console.log(s[0] === syb); // true