• js Object.defineProperty 使用


    语法

    Object.defineProperty(obj, prop, descriptor)

    参数说明:

    obj:必需。目标对象 
    prop:必需。需定义或修改的属性的名字
    descriptor:必需。目标属性所拥有的特性

    返回值:

    传入函数的对象。即第一个参数obj。

    针对属性,我们可以给这个属性设置一些特性,比如是否只读不可以写;是否可以被for..inObject.keys()遍历。

    示例1:

    <!DOCTYPE html>
    <html lang="zh">
    
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <meta http-equiv="X-UA-Compatible" content="ie=edge" />
            <title>Object.defineProperty 示例</title>
        </head>
    
        <body>
    
            <script type="text/javascript">
                var ss = {
                    age: 10
                };
                var name = 'mfg';
                Object.defineProperty(ss, 'name', {
                    //设置是否可以枚举
                    enumerable: false,
                    //是否可以删除目标属性
                    configurable: false,
                    // writable 控制是否可以修改(赋值)
                    //获取属性值  
                    get() {
                        return name;
                    },
                    //设置属性值  
                    set(val) {
                        name = val;
                    }
                })
                console.log(ss.name)
                ss.name = 'new value';
                console.log(ss.name);
            </script>
        </body>
    
    </html>

    示例2:

    <!DOCTYPE html>
    <html lang="zh">
    
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <meta http-equiv="X-UA-Compatible" content="ie=edge" />
            <title>Object.defineProperty 示例</title>
        </head>
    
        <body>
    
            <script type="text/javascript">
                Object.defineProperties(Object.prototype, 'allkeys', {
                    value: function() {
                        let result = [];
                        for(let i in this) {
                            result.push(i)
                        }
                        return result;
                    },
                    writable: true,
                    //关键配置,不可枚举,这样就可以在for in中遍历不到了
                    enumerable: false,
                    configurable: true
                });
            </script>
        </body>
    
    </html>

    说明:

    示例2的例子,在Object.prototype上增加了方法,同时保证了不被for in遍历到。

     

  • 相关阅读:
    day03--变量与基本数据类型
    day02--编程语言的分类与Python开发环境的搭建
    day01--编程与计算机组成原理
    基本数据类型操作
    python格式化字符串
    Python垃圾回收机制
    day04作业
    day03作业
    Pycharm2018安装与激活
    Python入门-python浅谈
  • 原文地址:https://www.cnblogs.com/mengfangui/p/9081419.html
Copyright © 2020-2023  润新知