如何获取对象的Symbol属性

时间:2015-10-14 06:41:35

标签: javascript ecmascript-6

我执行了以下代码

var x={};
x[Symbol("a")] = "a";
x.d = "d";

当我在浏览器控制台中尝试时

console.log(x); //Object {d: "d", Symbol(a): "a"}

JSON.stringify(x); //"{"d":"d"}"

var a=Symbol("a");
console.log(x[a]); //undefined

console.log(x['a']); //undefined
  

我有点困惑如何获得变量x的第二个属性,这是一个符号

1 个答案:

答案 0 :(得分:2)

您需要先恢复这些符号。

var x = {};
x[Symbol("a")] = "a";
x.d = "d";
symbols = Object.getOwnPropertySymbols(x);

console.log( symbols ); //will output [Symbol("a")]

由于符号用于调试,因此即使正常迭代Object,它们也不会显示为普通属性。

要获取符号的值,一旦获得符号属性,您可以执行以下操作:

console.log( x[ symbols[0] ] );

这是JSFiddle:http://jsfiddle.net/730q04bw/1/