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

相關文章
相關標籤/搜索