javascript 属性的特性 二十五

来源:互联网 发布:美工做好图怎么上传 编辑:程序博客网 时间:2024/05/21 00:56

数据属性的描述符对象的属性有 value 、 writeable 、enumerable 、 configurable 。

存取器属性的描述符对戏那个则是使用get属性和set属性代替value 和writeabe 。其中writeable、enumerable 和 configurable 都是布尔值。

get属性和set属性是函数值。


//如果想设置属性的特征,或者想让新建属性具有某种特殊特性,则需要调用object.fedineProperty(),传入一个要修改的对象,要创建

或者修改的属性的名称以及属性描述符对象:


<!DOCTYPE html><lang ="en"><head>    <meta charset="UTF-8">    <title>Title</title>      <script  type="text/javascript">          var o = {};          Object.defineProperties(o,"x",{value :1,writable : true,enumerable:false,          configurable :true          });          o.x;          alert(o.x);          Object.keys(o);//keys 方法仅返回可枚举属性和方法的名称。若要返回可枚举的和不可枚举的属性和方法的名称,          // 可使用 Object.getOwnPropertyNames 函数 (JavaScript)。          Object.defineProperties(o,"x",{writeable:false});          o.x = 2          alert(o.x);          var p =Object.defineProperties({}, {              x: {value:1,writeable:true,enumerable:true,configurable:true},              y: {value:1,writeable:true,enumerable:true,configurable:true },              r:{                  get:function () {                    return Math.sqrt(this.x * this.x + this                                    .y * this.y)                  },                  enumerable:true,                  configurable:true              }          })                    Object.defineProperty(Object.prototype,"extend",{              writeable: true,              enumerable: false,              configrable:true,              value: function (o) {//值就是这个属性                  var  names = Object.getOwnPropertyNames(o);                  for (var i = 0; i<names.length ; i++ ) {                    if (names[i] in this) continue;//如果属性已经存在,则跳过                    var desc = Object.getOwnPropertyDescriptor(o,names[i]);                      Object.defineProperty(this,name[i],desc);                  }              }          })        </script></head><body></body></html>


0 0