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