你的位置:首页 > Java教程

[Java教程]了解JavaScript 对象属性的标签


  对象属性的标签

  value(属性值), writable(属性可写), enumerable(属性可枚举), configurable(属性可配置), 这些属性标签使对象所持有的属性体现出不同的特性, 以便开发者开发使用.

  value

  value, 属性的值, 这个属性是最直观的体现, 一个属性我们使用的就是它的值, 这个值的类型可以是对象, 字符串, 值等任意类型. 如果未设置的话, 值会是undefined.

  Object.defineProperty(person, 'name', {

    configurable : false,

    writable : false,

    enumerable : true,

    value : "Jianwei Wang"

  });

  document.write(person.name);  //Jianwei Wang

  "Jianwei Wang"就是person.name的值.

  configurable

  confirurable, 顾名思义可配置的, 意思就是在标签为true时这个属性允许修改各种属性标签配置(true or false), delete关键字是否可以删除这个属性, 如果标签为false, 那么是不允许修改标签配置的, delete也不可以使用了. 它的作用主要是配置属性的标签.

  writable

  writable, 可写入的, 如果这个设置为false, 那么这个属性将不允许写入, 也就无法将writable设置为新的值.  

  代码演示, 可写与可配置的特性.

 1 <!DOCTYPE HTML> 2 <html>  3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 </head> 7 <body> 8 <script type="text/javascript"> 9 //声明一个对象并初始化10 var person = {11   name : "wang",12   age : 2313 }; 14 //定义一个key为hobby的属性, 设置为不可配置, 值为eat.15 //未设置的标签值默认为false, 所以这个属性是不允许配置, 枚举, 以及写入的.16 Object.defineProperty(person, 'hobby', {17   value : "eat"18 });19 person.hobby = "run";  //写入属性为run20 document.write(person.hobby);  //eat, 说明写入失败21 Object.defineProperty(person, 'hobby', {22   writable : true23 }); //对属性进行重新配置, 发现出错, 不允许重新配置可写入.24 </script>25 </body>26 </html>

  enumerable

  enumerable, 可枚举的, 如果将其关闭, 那么这个属性将不会被遍历出来. 所以那些用于属性遍历的方法就都不是很好用了(for in, Object.keys等), 检测还是可以的(in, hasOwnProperty等). 所以总结起来就是enumerable关闭后的作用就是, 让你知道我有, 但是就是不给你看.

 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=gb18030"> 5 <title></title> 6 <script type="text/javascript"> 7   var person = { 8     name : "Jianwei Wang", 9     age : 2310   }; //声明并初始化对象11   Object.defineProperty(person, "gender", {12     configurable : true,13     enumerable : true,14     value : "male"15   }); //配置一个新的属性gender, 设置为可配置, 可枚举的, 值为male16   document.write(Object.keys(person) + "<br />"); //name, age, gender17   Object.defineProperty(person, "gender", {18     enumerable : false,19   }); //重新配置gender为不可枚举属性.20   document.write(Object.keys(person) + "<br />"); //name, age21   document.write("gender" in person); //true22 </script>23 </head>24 <body>25 </body>26 </html>