2018-06-01 对象属性 数据属性和访问器属性

1:属性类型

属性类型分为2种:数据属性和访问器属性

数据属性 有4个描述其行为的特性,我的理解就是对属性的配置,配置这个属性是否可以被delete,被重写,被枚举(使用for in),属性的值,四个特性为:

configurable: 是否可以被delete 默认为true

enumerable: 是否可以被枚举 意思就是使用for-in进行循环遍历时,这个属性是否可以被遍历到

writable: 是否可以被重写

value: 存放值的地方

例子:

var persion = {}

Object.defineProperty(person, "name", {

    writable: false,

    value: "Nicholas"

});

Object.defineProperty() :这个函数用于给对象添加属性,同时可以配置属性的4个特性,配置过程中如果不指定,configurable、enumerable 和writable 特性的默认值都是 false,可以对同一个属性进行多次配置,但是如果某次将configurable设置为false,那么之后都configurable enumerable writable这三个特性都不可以进行配置了

访问器属性

访问器属性与数据属性的区别是访问器属性没有value,和write,但是会多了一个set和get方法,例子如下:

var persion = {}

Object.defineProperty('persion', 'name',

set : function () {},

get: function (){}

)

这个函数在定义set和get方法时,不一定必须要全都定义,只定义set意味着这个属性不可被读取,只定义get,意味着这个属性不可被赋值

Object.defineProperties(): 这个函数可以为对象定义多个属性,具体用法就是第一个参数是对象本身,第二个参数也是一个对象,里面放着对属性的定义

var book = {};

    Object.defineProperties(book, {

        _year: {

            value: 2004

        },

        edition: {

            value: 1

},

        year: {

            get: function(){},

         set: function(newValue){}

}

}

你可能感兴趣的:(2018-06-01 对象属性 数据属性和访问器属性)