1. 程式人生 > 實用技巧 >JS高階--Object資料屬性和訪問器屬性

JS高階--Object資料屬性和訪問器屬性

嗨!我是前端小M~~

Obj資料屬性和訪問器屬性

(可以對物件中常規的有範圍的資料進行判斷,比如年齡(age)分數(score))

object物件的鍵值有 :

  • 四個屬性:(【value,writable】資料描述符,【configurable,enumerable】訪問器屬性)
  • 兩個方法:(get(){}獲取 set(){}設定(*不能與資料描述符同時存在會報錯Invalid property descriptor.Cannot both specify accessors and a value or writable attribute, #<Object>at Function.defineProperty)
    let obj={
    name:"zhangsan",
    age:18
    }
    獲取物件某個鍵的屬性 1. get 獲取 Own自己的 Property屬性 Descriptor描述符 let result = Object.getOwnPropertyDescriptor(obj,"name"); console.log(result); ----打印出的預設屬性--> value: "zhangsan" //key對應的值 writable: true // 可被修改==》false 設定的鍵的值不可被外界修改 configurable: true //可配置性 可被刪除 ==》false 設定的鍵的值不可被外界刪除 enumerable: true //可列舉性 可被遍歷==》false 設定的鍵的值不可被外界遍歷 2.define 定義 Property 屬性 const obj = { name: "zhangsan", _age:28 , //模仿靜態語言私有屬性 _score: 60 } Object.defineProperty(obj, 'score', { // value: 18, //get set 與 value writeable不可同時存在* // writable: true, configurable: true, enumerable: true, get() { //訪問物件屬性時自動被呼叫 obj.age return this._score; console.log(this); }, set(value) { //設定該屬性時自動被呼叫 obj.age = 10 if (value < 0 || value > 100) { console.log("請輸入正確值"); return this._score; }else{ console.log('輸入成功'); this._score = value; } } })