Object.defineProperty(定义试添加json对象的属性)

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Object.defineProperty</title>
</head>
<body>
    
    <script type="text/javascript">
        let number = 18;
        
        let person = {
            name: "张三",
            sex: ""
        }

        Object.defineProperty(
            person, // 指定添加属性的 json 对象
            "age",  // 指定添加属性的名称
            {       // 指定添加属性配置项
                // value: 18,        // 设置值,不能和 get、set 配置同时使用
                // writable: true,   // 控制属性是否可修改,默认 false,不能和 get、set 配置同时使用
                enumerable: true, // 控制属性是否可枚举(遍历),默认 false
                configurable: true, // 控制属性是否可删除,默认 false
                get:function() {    // 简写:get(){},当有人读取 person 对象的 age 属性时,get 函数(getter)就会被调用,且返回的值就是 age 的值
                    console.log("调用 getter 函数");
                    return number;
                },
                set:function(value) { // 简写:set(value){},当有人修改 person 对象的 age 属性时,set 函数(setter)就会被调用,且会修改 age 的值
                                    // 注意,如果 age 属性的 getter 函数读取的是其他变量,那么需要修改被读取的变量
                    console.log("调用 setter 函数");
                    number = value;
                }
            }
        );

        console.log(person);
    </script>
</body>
</html>

 

posted @ 2022-01-17 18:07    阅读(35)  评论(0编辑  收藏  举报