一.对象属性设置 -- defineProperty
1.Object.getOwnPropertyDescriptor() 获取对象属性
var Person={
name:"zs",
}
var des=Object.getOwnPropertyDescriptor(Person,"name")
console.log(des.value) //zs
console.log(des.configurable) //true
console.log(des.writable) //true
console.log(des.enumerable) //true 在对象里面直接定义都为true
2.****对象的数据属性
value 属性的属性值
configurable 能否删除属性的值
writable 能否修改属性的值
enumerable 能否遍历(枚举)属性的值
(0)var Person={}
Object.defineProperty(Person,"name",{value:"zs"})
var des=Object.getOwnPropertyDescriptor(Person,"name")
console.log(des.value) //zs
console.log(des.configurable) //false
console.log(des.writable) //false
console.log(des.enumerable) //false 对象为空时都为false
(1)writable 能否修改属性的值
Object.defineProperty(Person,"name",{value:"zs",writable:false})
console.log(Person.name) //zs
Person.name="ls" //修改失败
console.log(Person.name) //zs
(2)enumerable 能否遍历(枚举)属性的值
Object.defineProperty(Person,"name",{value:"zs",enumerable:false})
var v1=Object.keys(Person)
console.log(v1)
(3)configurable 能否删除属性的值
Object.defineProperty(Person,"age",{value:"21",configurable:true})
console.log(Person.age) //21
delete Person.age
console.log(Person.age) //undefined
3.对象的访问属性
get: 在读取属性时调用的函数
set: 在写入属性时调用的函数
var Person={"_name":"zs",age:23}
var v1=""
Object.defineProperty(Person,"name",
{get:function(){
// console.log("get...")
return this._name
},
set:function(val){
console.log("set...",val)
if(val=&