javascript之属性器

var option = {

  enumerable: false,//是否可以被枚举

  writable: false,//是否可以编辑

  configurable: false,//是否可以配置

  value: null//值,

  get:function(){},//取值器(跟value不能同时存在)

  set:function(value){}//设值器(跟value不能同时存在)

};

 

 

var source = {a:1};

Object.defineProperty(source,'b',{

  value:2

});

console.log(source.b);//source.b是不可以修改不可以枚举的.比如Object.keys(source)是没有b的

var $temp = 0;

Object.defineProperty(source,'c',{

  get:function(){return $temp;},

  set:function(value){$temp = value;}

});

console.log(source.c);//source.c是不可以修改不可以枚举的.source.c获取的是(function(){return $temp;})();

source.c = '12' ;//此时执行的是(function(value){$temp = value;})('12');

我们可以在get/set方法里面添加自己的逻辑,监视数据的变化。目前框架Vue和Angular2就是这个原理。

posted @ 2017-03-28 13:39  EhuanRum  阅读(138)  评论(0编辑  收藏  举报