我正在尝试使用Symbol()函数在对象上创建匿名属性。
当我试图获取匿名属性的“属性描述符”时,它的可枚举标志被设置为 true 。
然而, for..in 循环无法检测到匿名属性,尽管它是可枚举的。
此外,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]);
}