enumerable:True传入数据后,新增的不可被枚举出来。
在社区也学了一段时间,等在成长点多点反辅社区,做点输出。
有一个问题是这样的javascript enumerable:True可以被枚举
,但根据下面的代码,发现不可被枚举。但是可通过
javascript person.hp
被找到。
//JSON对象
var person = {
name: "chendamao",
work: "Tester",
age: 35,
school:"jialidun"
}
var keys =Object.keys(person);//获取对象属性的数组
console.log(keys);
var value=[];
var len=keys.length
for(var i=0;i<len;i++){
var key =keys[i];
console.log(keys[i])//==>获取key
console.log(person[key]);//==>获取value person数组[key]拿到value
value[i]=person[keys[i]];//赋予1个变量
console.log('person --',key,":",value[i]);//遍历
}
console.log(person['name']) //console.log(person.name)
//enumerable:true可以被遍历
Object.defineProperty(person,"hp",{value:1500,enumerable:true}); //绑定hp和参数,但不和person共内存
console.log(person['hp']); //person.hp
console.log(keys) //没有遍历出来
2 回复
我按比较正常的写法重新来了一遍,你可以看一下。
你的写法,就最后一句有错误(见注释)。
const person = {
name: "chendamao",
work: "Tester",
age: 35,
school:"jialidun"
};
const values = [];
Object.keys(person).forEach((key) => {
console.log(`person key: ${key}, value: ${person[key]}`)
values.push(person[key])
})
Object.defineProperty(person,"hp",{ value:1500,enumerable:true }) //你的写法没有错
console.log(person['hp']) //这里可以正常打印出1500
console.log(Object.keys(person)) //person的key已经变了,变量keys保存的还是旧的,需要重新取
@soda-wy 十分感谢啊,我了解问题在哪里了。 前段日子被指派去做buffer那部分了。