在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
What are other ways of creating object properties in JS with enumerable set to false by default?
可枚举属性是其内部 [[Enumerable]] 标志设置为 true 的属性,这是通过简单赋值或通过属性初始值设定项创建的属性的默认值(通过 Object.defineProperty 定义的属性,并且此类默认值 [[Enumerable]] 为 false(。
var person = new Object();
//person = {"hair": "red", "eyes": "blue"};
Object.defineProperty(person, "gender", {value: "male"});
Object.defineProperty(person, "name", {value: "Joe"});
for (var prop in person) {
console.log(prop + " = " + person[prop]);
}
这将不产生任何内容,甚至不会产生错误,因为枚举设置为 false。取消注释简单的赋值并注释掉定义属性,它将产生
"hair": "red", "eyes": "blue".
MDN说"...等等",对我来说,Object.defineProperty 是创建默认情况下将 enumarable 设置为 false 的属性的唯一方法。
附言。我可能应该重新措辞一下。当我做新的 Object(( 时,它的可枚举属性默认设置为 false,所以当我做 Object.defineProperty(( 时,我没有碰 enumerable 属性,它仍然是假的。但是,当您随后执行简单分配时,枚举将设置为 true。
据我所知,使用 Object.defineProperty 是修改可枚举标志的唯一方法。在 ES5 之前,我们没有这样的机制。
相关文章:
- 如何创建js常量对象与"依赖/相对;价值观
- 如何在JS中创建对象的可变和不可变副本
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- 如何在Node.js中从数组中的值创建对象
- 如何创建一个考虑时区Node.JS/javascript的JS日期对象
- 使用 eval() JS 动态创建对象
- JS使用构造函数在对象中创建对象
- JS创建带有键但没有值的对象
- 在 JS 中创建对象
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- 下划线.js:使用对象中找到的键从对象列表中创建映射
- Angular 1.4.8/JS:创建构造函数并将属性继承到第三个对象中
- JS:使用迭代器在循环中创建对象
- Angular JS创建对象
- 是否可以创建一个具有多种颜色和字体大小的paper.js PointText对象
- d3.js创建一个在另一个之上的对象
- THRE.JS动态创建对象
- 无法访问使用require.js创建的对象
- js代码在创建对象的新实例后显示错误
- js从对象中的值创建堆叠条形图