ES6精讲05-symbol

171 阅读1分钟

原始数据类型Symbol:

  • 原始数据类型Symbol ,它表示是独一无二的值 (意味着内存的地址是不相等的)
  • 用途:使用较少,一般用来定义对象的私有变量
const name = Symbol('name');
const name2 = Symbol('name');
console.log(name === name2);  //false

Symbol的访问:

let s1 = Symbol('s1');
console.log(s1);  // Symbol(s1)

let obj = {
    [s1]:'小马哥'
};
console.log(obj[s1]) //小马哥

 for(let key in obj){
    console.log(key);   // undefined  ---说明她不可遍历
} 
 console.log(Object.keys(obj));  //[]空数组
  • 如果用Symbol定义的对象中的变量,取值时一定要用[变量名]
// 获取Symbol声明的属性名(作为对象的key)
let s = Object.getOwnPropertySymbols(obj);
console.log(s[0]);   //Symbol(s1)s

//反射,返回自己的key值
let m = Reflect.ownKeys(obj);
console.log(m);  // [Symbol(s1)]