javascript----對象特性

修改屬性默認的特性:

  Object.defineProperty(屬性所在的對象,屬性名字,描述符對象)
  在調(diào)用Object.defineproperty()方法創(chuàng)建一個新的屬性時,
  如果不指定,configurable、enumerable和writable特性的默認值都為false

描述符對象:

    屬性對象必須為:configurable、enumerable、writable和value其中的一個或多個值

如:
var person = {}; Object.defineProperty(person,"name",{ writable:false, value:"LiAo" }) alert(person.name); // “LiAo” person.name = "MrLiao"; alert(person.name) ; //"LiAo"

屬性類型

  • 數(shù)據(jù)屬性
    • configurable: 能否delete、能否修改特性、能否修改為訪問器屬性,默認為true, ps: 一旦設(shè)置為false后不可逆轉(zhuǎn)
    • enumerable: 能否通過for-in循環(huán)返回屬性,默認為true
    • writable: 能否修改屬性值,默認為true
    • value: 包含著這個屬性的值,默認為undefined
  • 訪問器屬性

訪問器屬性不包含數(shù)據(jù)值,而是包含一對getter和setter函數(shù)(不是必須)
讀取訪問器屬性——>調(diào)用getter,負責(zé)返回有效的值
寫入訪問器屬性——>調(diào)用setter,負責(zé)如何處理數(shù)據(jù)

  • configurable: 同上
  • enumerable:同上
  • Get:讀取屬性時調(diào)用的函數(shù),默認值為undefined
  • Set:寫入屬性時調(diào)用的函數(shù),默認值為undefined
使用訪問器屬性的常見方式:設(shè)置一個屬性的值會導(dǎo)致其他屬性發(fā)生變化:
    var book = {
     _year:2004,
     edition:1
      };
     Object.defineProperty(book,"year",{
     get:function(){
             return this._year;
     },
     set:function(newValue){
             this._year = newValue;
             this.edition += newValue -2004;
      }
    }
    });
      book.year = 2005;
      alert(book.edition);   //2  

注意如果不是同時制定getter和setter的話,如只指定getter意味著屬性時不可寫的,寫入屬性會被忽略。所以要根據(jù)需求指定這兩個函數(shù),不然會出現(xiàn)一些小毛病哈

定義多個屬性

使用Object.defineProperities()方法
var book = {}; Object.defineProperties(book,{ 第一個數(shù)據(jù)屬性名:{ writable等特性: 布爾值 value: 屬性值 }, 第一個數(shù)據(jù)屬性名:{ writable等特性: 布爾值 value: 屬性值 }, 第一個訪問器屬性名:{ get:function(){} set : function(){} },

讀取屬性的特征

 Object.getOwnPropertyDescriptor(屬性所在的對象,屬性名稱)
 若是數(shù)據(jù)屬性,返回包含configurable,enumberable,writable,value屬性的對象
 若是訪問器屬性,返回包含configurable,enumberable,get,set屬性的對象
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容