Javascript对象“属性”的“属性”

2020-06-29 作者:提刀少年

在JavaScript中,对象的“属性”是通过“属性描述”(property descriptor)进行表述的,其实属性描述就是“属性的属性”,主要包含以下关键字。

1、configurable —— 如果设为true,则可以修改或删除属性。如果设为false,则不允许修改。
2、enumerable —— 如果设为true,则可在for-in循环对象属性时出现。
3、value —— 指定属性的值,默认为undefined。
4、writable —— 如果设为true,则可通过赋值语句修改属性值。
5、get —— 定义getter函数,当访问属性时发生调用,不能与value与writable同时使用。
5、set —— 定义setter函数,当对属性赋值时发生调用,也不能与value与writable同时使用。

1、给实例对象添加可枚举和不可枚举的属性,代码如【清单-1】,执行后,只有eye属性打印出来。

  1. /*
  2. 清单-1
  3. */
  4. person = {};
  5. //可枚举
  6. Object.defineProperty(person, "eye", {
  7.  enumerable: true,
  8. });
  9. //不可枚举
  10. Object.defineProperty(person, "ear", {
  11.  enumerable: false,
  12. });
  13. //使用`for-in`遍历`person`的可枚举的属性
  14. for(let prop in person){
  15.  console.log("An enumerated property: " + prop);
  16. }

2、给实例对象设置set回调函数,如清单-2,执行后,日志将被打印出来。

  1. /*
  2. 清单-2
  3. */
  4. person = {};
  5. //定义set属性
  6. Object.defineProperty(person, "name", {
  7.  set: function(){
  8. console.log("call set property .");
  9. }
  10. });
  11. person.name = "man";