ECMAScript中对象的两种属性

1、数据属性
数据属性包括一个数据值的位置。这个位置能够读取和写入值。数据属性有4个形貌其行动的特征。
[ [ Configurable ] ] 示意可否经由过程delete删除属性从而从新定义属性,可否修正属性的特征,或许可否把属性修正为接见属性。默以为true
[ [ Enumerable] ] 示意可否经由过程for-in轮回返回属性。默以为true
[ [ Writable ] ] 示意可否修正属性的值。默以为true
[ [ Value ] ] 包括这个属性的属性值。读取属性的时刻,从这个位置读取,写入属性的时刻,把新值保留在这个位置。默以为undefined
eg:

var p = {};
Object.defineProperty(p, "name", {
    writable: false,
    value: 'nihao' 
})

2、接见器属性
接见器属性不包括数据值,他们包括一对儿getter和setter函数(不过,这两个函数都不是必需的)在读取接见器属性的时刻会挪用getter函数,这个函数担任返回有用的值。在写入接见器属性是,会挪用setter函数并传入新值,这个函数担任决议怎样处置惩罚数据
[ [ Configurable ] ] 示意可否经由过程delete删除属性从而从新定义属性,可否修正属性的特征,或许可否把属性修正为接见属性。默以为true
[ [ Enumerable] ] 示意可否经由过程for-in轮回返回属性。默以为true
[ [ Get ] ] 在读取属性时挪用的函数,默以为undefined
[ [ Set ] ] 在写入属性时挪用的函数,默以为undefined
eg:

var p = {get: 0};
Object.defineProperty(p, "name", {
    get: function (){
        console.log('get');
        return this.get;
    },
    set: function (newVal) {
        console.log('set');
        this.get = newVal;
    }
})

3、读取属性的特征
Object.getOwnPropertyDescriptor(属性地点的对象, 属性称号);
返回值是一个对象,接见属性configurable 、enumerable、get、set四个属性,
如果是数值属性,返回的对象属性有configurable 、enumerable、writable、value四个属性
备注:
Object.defineProperties()函数能够定义多个属性
eg:

var p = {get: 0};
Object.defineProperties(p, {"name", {
    get: function (){
        console.log('get');
        return this.get;
    },
    set: function (newVal) {
        console.log('set');
        this.get = newVal;
    }
}, "age": {
       writable: true,
       value: 11
   }
})
    原文作者:zer0_li
    原文地址: https://segmentfault.com/a/1190000015661720
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞