Object.defineProperty是干什么的?

语法
Object.defineProperty(obj,prop,descriptor)
// obj--要在其上定义属性的对象,prop--要定义或修改的属性的名称,descriptor--将被定义或修改的属性描述符
与点运算符的异同
var person={};  
person.num=1;
相当于
Object.defineProperty(person,'num',{
  value:1, 
  writable : true,
  configurable : true,
  enumerable : true
})
但是:
Object.defineProperty(person,'num',{
  value:1, 
  writable : false
})
person.num=2;
console.log(person.num);//1
存取描述符
  • get
    -- 给属性提供getter的方法

  • set
    -- 给属性提供setter的方法

function Archiver() {
  var temperature = null;
  var archive = [];

  Object.defineProperty(this, 'temperature', {
    get: function() {
      console.log('get!');
      return temperature;
    },
    set: function(value) {
      temperature = value;
      archive.push({ val: temperature });
    }
  });

  this.getArchive = function() { return archive; };
}

var arc = new Archiver();
arc.temperature; // 'get!'
arc.temperature = 11;
arc.temperature = 13;
arc.getArchive(); // [{ val: 11 }, { val: 13 }]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容