对象遍历:
let obj={
x:1,
y:2
}
for(let i in obj){
console.log(i)//x ,y
}
//但是我们在对象的原型上定义一个属性过后
Object.property.z=3
for(let i in obj){
console.log(i)//x ,y,z
}
//问什么呢?Object有那么多的属性比如z,toString...
//那为什么值将z属性遍历
以上情况:
//我们对对象的属性定义有
//obj.key=value
//Object.difinedProperty()
以obj.key这种方式定义的属性默认是configurable,enumerable,writable这些都是为true
//只有enumerable为true时对象才能被便利
Object.definedProperty(obj,key,{//属性描述
//配置项 详情请见我的js篇
configurable:true,//以这种的方式定义属性 默认为false
//可便利
enumerable:true//以这种的方式定义属性 默认为false
(//这两个属性不能和get set 两个函数一起出现,他们是互斥的
value:值,
writable:true,//以这种的方式定义属性 默认为false
)
(//get set
set(newValue){
console.log('set');
this.name = newValue //设置或修改属性时,会调用set函数,把设置的值通过参数传进去后,用一个变量或属性保存。并且当调用get,return就是返回的这个值
},
get(){
return this.name; //当读取属性时 返回return的值
}
)
})