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)

当属性被设置时,自动被调用,设置的值被调用

posted @ 2021-06-24 16:58  这名字好  阅读(316)  评论(0)    收藏  举报