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值。

posted on 2016-08-25 16:52  carlyin  阅读(124)  评论(0)    收藏  举报

导航