Object.defineproperty

Object.defineproperty 的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性

Object.defineproperty 参数

Object.defineproperty方法需要传递3个参数

Object.defineproperty(obj, prop, desc )

参数1:obj 需要定义属性的当前对象

参数2:prop 当前需要定义的属性名

参数3:desc 描述符 一般是一个对象

一般通过为对象的属性赋值的情况下,对象的属性可以修改也可以删除,但是通过Object.defineProperty()定义属性,通过描述符的设置可以进行更精准的控制对象属性。 

Object.defineProperty(person,'age',{
                value:18, // 属性值
                enumerable:true, //控制属性是否可以枚举,默认值是false
                writable:true, //控制属性是否可以被修改,默认值是false
                configurable:true //控制属性是否可以被删除,默认值是false
            })

 

 

示例:

复制代码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Object.defineproperty</title>
    </head>
    <body>
        <script type="text/javascript" >
            let number = 18
            let person = {
                name:'张三',
                sex:'',
            }

            Object.defineProperty(person,'age',{
                // value:18,
                //控制属性是否可以枚举,默认值是false,换句话说就是false情况下
                // enumerable:true,  
                // writable:true, //控制属性是否可以被修改,默认值是false
                // configurable:true //控制属性是否可以被删除,默认值是false

                //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
                get(){
                    console.log('有人读取age属性了')
                    return number
                },

                //当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
                set(value){
                    console.log('有人修改了age属性,且值是',value)
                    number = value
                }

            })

            // console.log(Object.keys(person))

            console.log(person)
        </script>
    </body>
</html>
复制代码

 

  

posted @   安静点--  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-12-11 页面之间跨域数据传输
点击右上角即可分享
微信分享提示