属性类型(数据属性、访问器属性)

语法:
Object.defineProperty(obj, prop, descriptor)
1、数据属性
实例1:单个属性的建立
    var person = {};
    Object.defineProperty(person,'name',{
        value:'zhangsan',//属性的值
        writable:false,//不能更改
        configurable:false,//不能删除
        enumerable:false //不能for-in遍历
    });

默认情况下:true

writable:false||true
configurable:false||true
enumerable:false||true

实例2:多个属性的建立
var person = {};
    Object.defineProperties(person,{
        name:{
            value:'zhangsan',
            writable:false,//||true
            configurable:false,//||true
            enumerable:false,//||true
        },
        sex:{
            value:'nan',
            writable:false,//||true
            configurable:false,//||true
            enumerable:false,//||true
        },
        age:{
            value:23,
            writable:false,//||true
            configurable:false,//||true
            enumerable:false,//||true
        }
    });

实例3:

描述符:descriptor 

再通俗一点,比如你在 面向对象 编程中 定义一个(没有定义方法)类:class person , 在这个类里面,有name,age, heigth, weight,等等属性, 这个类就可以看作一个对 person 的描述符,而具体的实例则是具体的“被描述物”
 
 
描述符可同时具有的键值
 
 
  configurable enumerable value writable get set
数据描述符 Yes Yes Yes Yes No No
存取描述符 Yes Yes No No Yes Yes

如果一个描述符不具有value,writable,get 和 set 任意一个关键字,那么它将被认为是一个数据描述符。如果一个描述符同时有(value或writable)和(get或set)关键字,将会产生一个异常。

地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
 
 

2、访问器属性




 

猜你喜欢

转载自www.cnblogs.com/jokes/p/9250463.html