javascript defineProperty 使属性不可枚举
javascript defineProperty to make an attribute non enumerable
我正在尝试使用defineProperty使属性不会出现在...在循环中,但它不起作用。这段代码是否正确?
function Item() {
this.enumerable = "enum";
this.nonEnum = "noEnum";
}
Object.defineProperty(Item, "nonEnum", { enumerable: false });
var test = new Item();
for (var tmp in test){
console.log(tmp);
}
Item
没有名为nonEnum
的属性(查看一下)。它是一个(构造函数)函数,它将创建一个具有名为 nonEnum
的属性的对象。
所以这个会起作用:
var test = new Item();
Object.defineProperty(test, "nonEnum", { enumerable: false });
你也可以像这样写这个函数:
function Item() {
this.enumerable = "enum";
Object.defineProperty(this, "nonEnum", {
enumerable: false,
value: 'noEnum'
});
}
jsFiddle 演示
相关文章:
- 不可枚举的属性出现在 for..在 Chrome 中循环
- JSON.stringify未序列化可枚举属性
- 为什么ES6 WeakMap's不可枚举
- Javascript不可枚举属性
- 为什么在枚举属性/函数时键长度不准确
- 遍历所有不可枚举属性的任意方法
- 断言对象上存在可枚举属性
- 使 Node.js 流信息不可枚举
- 使用 Object.create 时无法枚举属性
- javascript defineProperty 使属性不可枚举
- 对不可枚举属性进行迭代
- 使用forEach枚举属性和值
- 如何在IE8的JavaScript中添加不可枚举属性
- 在Javascript中随机选择对象的可枚举属性
- JS不可枚举函数
- 是否可以模拟不可枚举的属性
- 扩展具有不可枚举属性的对象
- 可以在javascript构造函数中声明不可枚举的属性吗?
- 使属性不可枚举有什么好处
- 在 javascript 中克隆不可枚举的属性