ES6 symbol笔记
symbol是区别于undefined number string object function等类之外新增的一个类型,可用typeof操作符来判断
var a=Symbol(); console.log(typeof a)//symbol
symbol作用主要是用来防止重复定义属性
//空symbol
var a=Symbol();
var b=Symbol();
console.log(a==b)//false
//加标识符的symbol
var c=Symbol("a");
var d=Symbol("a");
var e=Symbol("b");
console.log(c==d)//false
console.log(d==e)//false
symbol不能做字符串拼接操作
var mySymbol = Symbol();
var a = {};
a.mySymbol = 'Hello!';
console.log(a[mySymbol]) // undefined
console.log(a.mySymbol) // "Hello!"
console.log(a['mySymbol']) // "Hello!"
//和下面的对比
var mySymbol = Symbol();
var a = {};
a[mySymbol] = 'Hello!';
console.log(a[mySymbol]) // "Hello!"
console.log(a.mySymbol) // undefined
console.log(a['mySymbol']) // undefined
symbol遍历问题
symbol属性无法用for...in和for...of遍历,也不会被Object.keys()、Object.getOwnPropertyNames()返回
访问方法:Object.getOwnPropertySymbols方法返回一个数组,成员是当前对象的所有用作属性名的Symbol值。
浙公网安备 33010602011771号