读取属性的特性

Object.getOwnPropertyDescriptor()方法,
* 两个参数:属性所在的对象和要读取器描述符的属性名,
* 返回值是一个对象,
* 如果是数据属性有:configurable,enumerable,writable,value.
* 如果是访问器属性有:configurable,enumerable,get,set.

<script>
    var person = {};
    Object.defineProperties(person, {
        //使用defineProperties方法,所有属性的特性默认为false,如需使用需要设置为true
        name: {
            value: "hongbin"
        },
        _year:{
            value:2000,
            writable:true
        },
        age: {
            value: 1,
            writable:true
        },
        year: {
            get() {
                return this._year
            },
            set(v) {
                if (v > this._year) {
                    this._year = v;
                    this.age += v - 2000;
                }
            }
        }
    });

    person.year = 2020;

    /*
    * Object.getOwnPropertyDescriptor()方法,
    * 两个参数:属性所在的对象和要读取器描述符的属性名,
    * 返回值是一个对象,
    * 如果是数据属性有:configurable,enumerable,writable,value.
    * 如果是访问器属性有:configurable,enumerable,get,set.
    * */
    console.log(person);

    let descriptor__year = Object.getOwnPropertyDescriptor(person,"_year");
    console.log(descriptor__year);
    //{value: 2020, writable: true, enumerable: false, configurable: false}

    let descriptor_year = Object.getOwnPropertyDescriptor(person,'year');
    console.log(descriptor_year);
    //{enumerable: false, configurable: false, get: ƒ, set: ƒ}
    console.log(descriptor_year.configurable);//false

</script>

在这里插入图片描述

发布了38 篇原创文章 · 获赞 51 · 访问量 6422

猜你喜欢

转载自blog.csdn.net/printf_hello/article/details/104238415