标签:reac create 组成 java 字符 原型链 通过 枚举 区别
在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。可枚举性决定了这个属性能否被for…in查找遍历到。
enumerable值为 true,Object对象的propertyIsEnumerable()方法可以判断此对象是否包含某个属性,并且这个属性是否可枚举。可以通过for...in , Object.keys, Json.stringify 方法枚举。
var props = [];
for(var i obj){
if(obj.hasOwnProperty(obj[i]){
props.push(obj[i]);
}
}
enumerable值为 false。无法通过for...in , Object.keys, Json.stringify 方法枚举。
方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性)组成的数组。
var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"]
// 类数组对象
var obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj).sort()); // ["0", "1", "2"]
// 使用Array.forEach输出属性名和属性值
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
console.log(val + " -> " + obj[val]);
});
// 输出
// 0 -> a
// 1 -> b
// 2 -> c
//不可枚举属性
var my_obj = Object.create({}, {
getFoo: {
value: function() { return this.foo; },
enumerable: false
}
});
my_obj.foo = 1;
console.log(Object.getOwnPropertyNames(my_obj).sort()); // ["foo", "getFoo"]
【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性
标签:reac create 组成 java 字符 原型链 通过 枚举 区别
原文地址:https://www.cnblogs.com/wanxiong/p/js-basic-object-getOwnPropertyName.html