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,则这个属性将不会出现在枚举中,但可以正常访问他

      

      

     

  • 相关阅读:
    第一册:lesson 117.
    第一册:lesson 115.
    Map集合。
    第一册:lesson 113.
    第一册:lesson 111.
    泛型。
    EXT.NET初学
    LINQ查询
    后台调用前端JS
    数字与数组或者字符串里面的内容比较
  • 原文地址:https://www.cnblogs.com/wccc/p/6727185.html
Copyright © 2011-2022 走看看