有四个操作会忽略enumerable为false的属性
for...in
循环:只遍历对象自身的和继承的可枚举的属性。
var obj = {
prop1: 'value1',
prop2: 'value2'
};
Object.defineProperty(obj, 'prop3', {
value: 'value3',
enumerable: false
});
for (var key in obj) {
console.log(key); // Output: prop1, prop2
}
Object.keys()
:返回对象自身的所有可枚举的属性的键名。
var obj = {
prop1: 'value1',
prop2: 'value2'
};
Object.defineProperty(obj, 'prop3', {
value: 'value3',
enumerable: false
});
var keys = Object.keys(obj);
console.log(keys); // Output: ["prop1", "prop2"]
JSON.stringify()
:只串行化对象自身的可枚举的属性。
var obj = {
prop1: 'value1',
prop2: 'value2'
};
Object.defineProperty(obj, 'prop3', {
value: 'value3',
enumerable: false
});
var json = JSON.stringify(obj);
console.log(json); // Output: "{"prop1":"value1","prop2":"value2"}"
Object.assign()
: 忽略enumerable
为false
的属性,只拷贝对象自身的可枚举的属性。
var source = {
prop1: 'value1',
prop2: 'value2'
};
Object.defineProperty(source, 'prop3', {
value: 'value3',
enumerable: false
});
var target = {};
Object.assign(target, source);
console.log(target); // Output: { prop1: 'value1', prop2: 'value2' }
在以上示例中,
enumerable
属性为false
的属性prop3
在遍历、获取键名、序列化、拷贝等操作中都被忽略了。
THE END
暂无评论内容