Javascript 使用Symbol()函数向对象添加匿名属性

Javascript 使用Symbol()函数向对象添加匿名属性,javascript,object,symbols,Javascript,Object,Symbols,我正在尝试使用Symbol()函数在对象上创建匿名属性 当我试图获取匿名属性的“属性描述符”时,它的可枚举标志被设置为true 但是,..in循环的无法检测匿名属性,尽管它是可枚举的 此外,MDN的页面上说—— 当在属性赋值中使用符号值作为标识符时,该属性(如符号)是匿名的;并且也是不可枚举的。因为属性是不可枚举的,所以它不会在循环构造“for(…in…)”中显示为成员 但在我的例子中,属性被证明是可枚举的 更新-工作示例: function foo(a){ var prop =

我正在尝试使用Symbol()函数在对象上创建匿名属性

当我试图获取匿名属性的“属性描述符”时,它的可枚举标志被设置为true

但是,..in循环的无法检测匿名属性,尽管它是可枚举的

此外,MDN的页面上说——

当在属性赋值中使用符号值作为标识符时,该属性(如符号)是匿名的;并且也是不可枚举的。因为属性是不可枚举的,所以它不会在循环构造“for(…in…)”中显示为成员

但在我的例子中,属性被证明是可枚举的

更新-工作示例:

function foo(a){
    var prop = Symbol();
    this[prop] = a;
}

var obj = new foo(96);

console.log(Object.getOwnPropertyDescriptors(obj));

for(var x in obj){
    console.log("Object property - " + obj[x]);
}

请附加一个工作片段,而不是图像。@gurvinder372在我的例子中,for in-loop输出为空。道具是可枚举的。但是根据MDN,属性应该是不可枚举的,因此for..in输出应该是空的。这是MDN为for..in循环所说的“可枚举属性显示在for..in循环中,除非属性的名称是符号。”@AnimeshKumar