2020-05-23 对象getter和setter

246 阅读1分钟

一个 js 对象包含数据属性访问器属性

let obj = {
    name:"Jay",
    get info(){
           console.log("我叫" + this.name)
    },
    set info(param){
          this.name = param
    }
}

1.数据属性

包含一个数据值的位置,在这个位置可以读取和写入值。

人话:就字面意思,比如上面例子中 obj 的数据属性就是 name 属性

数据属性包含四个特性:

  • configurable:是否可以被 delete 删除,默认 true
  • enumerable:是否能通过 for-in 循环遍历,默认 true
  • writable:是否可以修改属性的值,默认 true
  • value:保存这个属性的数据值,默认 undefined

2.访问器属性

访问器属性不包含数据值。它包含一对 getter 和 setter 函数。

访问器属性有四个特性:

  • [[Configurable]]:默认为 true 。表示能否通过 delete 删除属性从而重新定义属性,能否修改属性特性,或者能否把属性修改为访问器属性;
  • [[Enumerable]]:默认为 true。表示能否通过 for-in 循环返回属性;
  • [[Get]]:读取属性时调用的函数,默认为 undefined;
  • [[Set]]:写入属性时调用的函数,默认为 undefined。

参考:MDN 对象初始化