瞭解JavaScript 對象屬性的標簽

来源:http://www.cnblogs.com/JianweiWang/archive/2016/02/27/5221060.html
-Advertisement-
Play Games

對象屬性的標簽 value(屬性值), writable(屬性可寫), enumerable(屬性可枚舉), configurable(屬性可配置), 這些屬性標簽使對象所持有的屬性體現出不同的特性, 以便開發者開發使用. value value, 屬性的值, 這個屬性是最直觀的體現, 一個屬性我們


  對象屬性的標簽

  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>

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們用抽象構建框架,用實現擴展細節的註意事項而已:單一職責原則告訴我們實現類要職責單一;里氏替換原則告訴我們不要破壞繼承體系;依賴倒置原則告訴我們要面向介面編程;介面隔離原則告訴我們在設計介面的時候要精簡單一;迪米特法則告訴我們要降低耦合。而開閉原則是總綱,他告訴我們要對擴展開放,對修改關閉。
  • 重要程度:★★★☆☆ 一、什麼是模板方法模式 使用了JAVA的繼承機制,在抽象類中定義一個模板方法,該方法引用了若幹個抽象方法(由子類實現)或具體方法(子類可以覆蓋重寫); 二、補充說明 其實就是JAVA的繼承以及抽象方法、重寫覆蓋的使用; 一般把模板方法定義成final避免被子類修改 三、角色 抽
  • 定義:一個對象應該對其他對象保持最少的瞭解。 問題由來:類與類之間的關係越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。 解決方案:儘量降低類與類之間的耦合。
  • 重要程度:★★★☆☆ 一、什麼是責任鏈模式 為請求創建了一個接收者對象的鏈,每個接收者都包含對另一個接收者的引用,當某個接受者不能處理該請求時,會將該請求轉給下一個接受者處理; 二、補充說明 請求發送者與請求接受者解耦 應用例子:struts的攔截器,servlet的過濾器 三、角色 抽象請求處理者
  • •低層模塊儘量都要有抽象類或介面,或者兩者都有。 •變數的聲明類型儘量是抽象類或介面。 •使用繼承時遵循里氏替換原則。
  • 在CSS網頁開發佈局中,需要對浮動和定位有深刻的理解才能在開發中游刃有餘。基於此,在博客園中做了本篇總結,這些總結來自實踐經驗和閱讀一些書籍後的理解總結。主要內容為浮動,清除浮動,定位。
  • 編者註:作者以一個運動的小車為例子,講述了三種實現HTML5動畫的方式,思路清晰,動畫不僅僅是canvas,還有css3和javascript.通過合理的選擇,來實現最優的實現。 PS:由於顯卡、錄製的幀間隔,以及可能你電腦處理器的原因,播放過程可能有些不太流暢或者失真! 分三種方式實現: (1)
  • 項目中需要一個下載功能,根據系統跳轉到不同的頁面,如iphone跳轉到IOS頁面,android跳轉到android頁面。 下麵為頁面判斷頁面: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>手機AP
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...