javaScript 之set/get方法的使用

例1:var fe={dom

  name:'leony',
  $age:null,
  get age(){
    if(this.$age == undefined){  //this.$age == undefined 或 this.$age == null
      return new Date().getFullYear()-1989;
    }else{
      return this.$age;
    }
  },
  set age(val){
    val = +val;  //数字转换,若为非数字会转为NaN;
    if(!isNaN(val)&&val>0&&val<150){
      this.$age = +val;
    }else{
      throw new Error("Incorrect val = "+val);
    }
   }
}
console.log(fe.age)
fe.age='aaa';  //调取 fe 函数的 set 方法
console.log(fe.age)函数

 

例2:var person={};
Object.defineProperties(person,{  // Object.defineProperties 建立多个对象属性;
  title:{value:"fe",enumerable:true},
  corp:{value:"baba",enumerable:true},
  salary:{value:30000,enumerable:true,writable:true},
  luck:{
    get:function(){
      return Math.random()>0.5?"good":"bad"
    }
  },
  promote:{
    set:function(level){
      this.salary*=1+level*0.1;
    }
  }
})
console.log(Object.getOwnPropertyDescriptor(person,"title"));
console.log(person.salary);
console.log(person.luck);
person.promote=2;
console.log(person.salary);ui

Object.defineProperty(obj,"属性",{定义方法});this

定义方法:enumerable:是否可枚举,影响 for in 方法,为"false"时不能被 for in 查找spa

     writable:是否可被修改
prototype

     configurable:是否可被 delete 方法删除对象

Object.getOwnPropertyDescriptor(object,propertyname) : 获取指定对象的自身属性描述符。自身属性描述符是指直接在对象上定义(而非从对象的原型继承)的描述符继承

                 object               必需。 包含属性的对象。ip

                 propertyname   必需。 属性的名称。ci

相关文章
相关标签/搜索