attribute 与 property 的区别
attribute 与 property 的区别
以语言来区分的话:
attribute 是 html 上的属性
property 是 js 对象上的属性
let obj={name:"zhang"}
let result=Object.getOwnPropertyDescriptor(obj,"name")
log(result) //zhang
value:"zhang" //value值
writable:true // writable 可写入:即该值可以被修改
enumerable:true//enumerable 控制可枚举性 即该属性是否会被 for in 和 Object.keys()遍历到
configurable:true // configurable 可配设置,即该值是否能被 delete
定义属性
Object.defineProperty(obj,"key",desceriptor)
obj : //被操作的对象
key://属性名
descriptor :属性相关信息的描述符(Object类型)
value:"zhang" //value值
writable:true // writable 可写入:即该值可以被修改
enumerable:true//enumerable 控制可枚举性 即该属性是否会被 for in 和Object.keys()遍历到
configurable:true // configurable 可配设置,即该值是否能被 delete
get() //获取方法
set() //设置方法
//通过 defineProperty() 添加的属性都是默认不允许被修改,删除,遍历,为改属性修改值是不会生效的
数据描述符 和 存取描述符 是不能同时存在的
Object.defineProperty(obj,"age",{get(){return 18}})
log(obj.age)
当属性被设置时,自动被调用,设置的值被调用

浙公网安备 33010602011771号