使用Symbol()函数将匿名属性添加到对象

时间:2018-03-19 06:11:50

标签: javascript object symbols

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

enter image description here

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

enter image description here

然而, for..in 循环无法检测到匿名属性,尽管它是可枚举的。

enter image description here

此外,MDN的Symbol - Glossary页面说明了 -

  

当符号值用作属性赋值中的标识符时,属性(如符号)是匿名的;并且不可枚举。因为该属性是不可枚举的,所以它不会在循环结构“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]);
}

0 个答案:

没有答案