了解JavaScript 對象屬性的標簽 -开发者知识库

了解JavaScript 對象屬性的標簽 -开发者知识库,第1张

  對象屬性的標簽

  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 : 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>

  

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复