JavaScriptオブジェクトのプロパティに関するラベル

6684 ワード

オブジェクト属性のラベル
value(属性値)、writable(属性書き込み可能)、enumerable(属性列挙可能)、configurable(属性構成可能)、これらの属性ラベルは、開発者が開発するためにオブジェクトが持つ属性に異なる特性を体現させる.
  value
value、属性の値、この属性は最も直感的な体現で、1つの属性は私たちが使っているのはその値で、この値のタイプはオブジェクト、文字列、値などの任意のタイプであることができます.もし設定していないならば、値は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 : 23
13 }; 
14 //    key hobby   ,        ,   eat.
15 //          false,             ,   ,      .
16 Object.defineProperty(person, 'hobby', {
17     value : "eat"
18 });
19 person.hobby = "run";   //     run
20 document.write(person.hobby);   //eat,       
21 Object.defineProperty(person, 'hobby', {
22     writable : true
23 }); //         ,     ,           .
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 : 23
10     };  //        
11     Object.defineProperty(person, "gender", {
12         configurable : true,
13         enumerable : true,
14         value : "male"
15     }); //        gender,       ,     ,   male
16     document.write(Object.keys(person) + "<br />"); //name, age, gender
17     Object.defineProperty(person, "gender", {
18         enumerable : false,
19     }); //    gender       .
20     document.write(Object.keys(person) + "<br />"); //name, age
21     document.write("gender" in person); //true
22 </script>
23 </head>
24 <body>
25 </body>
26 </html>