JS中的getter和setter


對象有兩種屬性:(1)數據屬性,就是我們經常使用的屬性(2)訪問器屬性,也稱存取器屬性

存取器屬性就是一組獲取和設置值的函數。getter負責獲取值,它不帶任何參數。setter負責設置值,在它的函數體中,一切的return都是無效的。

var o = {
  get val(){
    /*函數體*/
    return ;
  },
  set val(n){
    /*函數體*/
  }
}

 

在對象內如果設置了存取器屬性,如果某一變量只聲明了getter方法,那么它僅僅只可讀而不可寫。如果只聲明了setter方法,那么讀到的該變量值永遠都是undefined。

//只聲明getter方法時不能通過getter方法來改變變量值
var obj = {
  a: 3,
  b: 8,
  get val() {
    return this.a;
  }
}

console.log(obj.val);     //3
obj.val= 100;
console.log(obj.val); //3

//只聲明setter方法時不能獲取變量的值
var obj = {
  a: 3,
  b: 8,
  set val(n) {
    this.a = n;
  }
}
console.log(obj.val);     //undefined
obj.val= 100;
console.log(obj.val); //undefined
console.log(obj.b);  //8   其他變量不受影響

//同時聲明兩種方法
var obj = {
  a: 3,
  b: 8,
  get val(){
    return this.a;
  },
  set val(n) {
    this.a = n;
  }
}
console.log(obj.val);     //3
obj.val= 100;
console.log(obj.val); //100

setter和getter方法在定義時並未用function關鍵字

詳細可以參考:https://www.cnblogs.com/zhuzhenwei918/p/6025077.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM