首页 > 其他分享 > Object.defineproperty

Object.defineproperty

时间:2022-12-11 23:00:20浏览次数:40  
标签:false age Object person 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>

 

  

标签:false,age,Object,person,defineproperty,属性
From: https://www.cnblogs.com/anjingdian/p/16974819.html

相关文章