JS symbol的学习

2019-03-02  本文已影响0人  何大必

详细介绍见MDN文档,本文是从文档中精简的

介绍

var sym1 = Symbol('foo');
var sym2 = Symbol('foo');
sym1 == sym2 //false
sym2.toString();//"Symbol('foo')"

Symbols 与 for...in

Symbols在for...in迭代中不可枚举。Object.getOwnPropertyNames()不会返回symbol对象的属性,但是可以通过Object.getOwnPropertySymbols()得到他们。

 var obj = {
        a:'a',
        'b':'b',
   };
   obj[Symbol('c')] = 'c'
   for (var key in obj){
        console.log(key);//a b
    }
console.log(Object.getOwnPropertySymbols(obj));//[Symbol(c)]

Symbols 与JSON.stringify()

当使用 JSON.strIngify() 时以 symbol 值作为键的属性会被完全忽略:

JSON.stringify({[Symbol("foo")]: "foo"});                 
// '{}'
上一篇 下一篇

猜你喜欢

热点阅读