• JS属性描述符


    var myObject = {
                a:2
            };
            Object.getOwnpropertyDescriptor(myObject,"a");
            {
                value:2,
                writable:true,
                emumerable:true,
                configurable:true
            }

    这段代码中的属性描述符不仅只有2,还有writable(可写)、enumerable(可枚举)、configurable(可配置)三种

    在创建普通属性时属性描述符会使用默认值,我们也可以使用 Object.defineProperty(...)添加一个新属性或者修改一个已有属性(如果是configurable)并对特性进行设置

    代码示例:

    var myObject = {};
            Object.defineProperty(myObject,"a",{
                value:2,
                writable:true,
                configurable:true,
                emumerable:true
            });
            console.log(myObject.a);//2

    下面是对这三个属性描述符的介绍:

    1)writable:决定是否可以修改属性的值

    var myObject = {};
            Object.defineProperty(myObject,"a",{
                value:2,
                writable:false,
                configurable:true,
                emumerable:true
            });
            myObject.a = 3;
            console.log(myObject.a);//2

    解析:writable:false 可以看作为属性不可改变,在严格模式("use strict";)下,引擎会抛出TypeError的异常,这表示我们无法修改一个不可写的属性

    2)configurable:只要属性是可配置的,就可以使用 defineProperty(...)方法来修改属性描述符

    注意!!

    a)在false情况下,如果修改,不管是不是严格模式,都会抛出TypeError的错误

    b)在这种情况下,我们仍可以将可写性的状态由true改为false

    c)delete属性也会被禁止(delete myObject.a;)

    3)emumerable:可枚举,如果将它设置为false,则这个属性将不会出现在枚举中,但可以正常访问他

      

      

     

  • 相关阅读:
    阿里云下Linux MySQL的安装
    protocol buffer相关
    Unity NGUI UIPanel下对粒子的剪裁
    NGUI中UILabel用省略号替换超出显示区域的内容
    Go交叉编译
    Unity3d使用未破解的TexturePacker
    编程之美 找出符合条件的整数
    算法导论~
    hadoop资料汇总(网上)
    SOE 中调用第三方dll
  • 原文地址:https://www.cnblogs.com/wccc/p/6727185.html
Copyright © 2020-2023  润新知