关于Object的属性

  • 定义属性

      var obj = {};
      Object.defineProperty(obj, "key1", {
          value: "123",
          writable: false,
          enumerable: false,
          configurable: false
      });
    	
      obj.key1;
      obj.key1 = "456"; //进行值的修改,但是会修改失败
      obj.key1;
      Object.defineProperty(obj, "key2", {
          get: function() {
              console.log("value getting");
              return 456;
          },
          set: function(val) {
              console.log("value setting=" + val);
          }
      });
      obj.key2;
      obj.key2 = "789";
      obj.key2;
    

说明:该方法实现对象obj的属性定义,其中对于某一个get/set和value/writable不能重复设置, 因为二者功能一样,只能设置一次完成属性值的设置。

例如:key1属性通过value/writable设置,key2通过get/set进行设置。

writable:如果为false,属性的值就不能被重写,只能为只读了

configurable:总开关,一旦为false,就不能再设置他的(value,writable,configurable)

enumerable:是否能在for…in循环中遍历出来或在Object.keys中列举出来。