zoukankan      html  css  js  c++  java
  • 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,则这个属性将不会出现在枚举中,但可以正常访问他

      

      

     

  • 相关阅读:
    (转)交换两个变量的值,不使用第三个变量的四种法方
    Java权威编码规范
    Git的安装和设置
    ActiveMQ简单入门
    JMS术语
    求助 WPF ListViewItem样式问题
    初步探讨WPF的ListView控件(涉及模板、查找子控件)
    圆角button
    用Inno Setup来解决.NetFramework安装问题
    [!!!!!]Inno Setup教程-常见问题解答
  • 原文地址:https://www.cnblogs.com/wccc/p/6727185.html
Copyright © 2011-2022 走看看