對象遍歷方法

来源:http://www.cnblogs.com/xiaohanblog/archive/2017/12/19/8068150.html
-Advertisement-
Play Games

各種遍歷對象的方法返回值的不同 前置代碼: function Obj() { // 直接在this上添加屬性 this.prop_this = 'prop_this'; // 在this上添加symbol屬性 this[Symbol.for('prop_symbol')] = 'prop_symbo ...


各種遍歷對象的方法返回值的不同

前置代碼:

    function Obj() {
        // 直接在this上添加屬性
        this.prop_this = 'prop_this';
        // 在this上添加symbol屬性
        this[Symbol.for('prop_symbol')] = 'prop_symbol';
    }
    
    // 原型上添加屬性
    Obj.prototype.propProto = 'prop_proto';
    
    const obj = new Obj();
    
    // 設置遍歷屬性enumerable設置為否
    Object.defineProperty(obj, 'prop_dontEnum', {
        value: 'prop_dontEnum',
        enumerable: false,
        writable: false,
        configurable: false
    });
  1. getOwnPropertyDescriptors 可以獲取所有的自身屬性描述

    console.log(Object.getOwnPropertyDescriptors(obj));
    // { 
          prop_this: 
           { value: 'prop_this',
             writable: true,
             enumerable: true,
             configurable: true },
          prop_dontEnum: 
           { value: 'prop_dontEnum',
             writable: false,
             enumerable: false,
             configurable: false },
          [Symbol(prop_symbol)]: 
           { value: 'prop_symbol',
             writable: true,
             enumerable: true,
             configurable: true } 
         }
  2. getOwnPropertyNames 可以獲取自身除symbol之外的屬性,獲取自身symbol值可以使用 getOwnPropertySymbols

    console.log(Object.getOwnPropertyNames(obj));
    // [ 'prop_this', 'prop_dontEnum' ]
    
    console.log(Object.getOwnPropertySymbols(obj));
    // [ Symbol(prop_symbol) ]
  3. for...in 可以獲取自身可以枚舉除symbol外的屬性和原型屬性

    for(var i in obj) {
        console.log(i);
    }
    // prop_this  propProto
  4. Object.keys 和 Object.values 都只可以獲取自身除了symbol外可枚舉的屬性

    console.log(Object.keys(obj));
    // [ 'prop_this' ]
  5. Reflect.ownKeys(obj)可以獲取自身所有的屬性

    console.log(Reflect.ownKeys(obj));
    // [ 'prop_this', 'prop_dontEnum', Symbol(prop_symbol) ]

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

-Advertisement-
Play Games
更多相關文章
  • >>adb devices常見錯誤: >>解決方案彙總 檢查埠是否占用:netstat -ano | findstr 5037 | findstr LISTENING 檢查占用應用:tasklist | findstr PID adb nodaemon server —— 可以列印詳細信息 若占用 ...
  • 1、APP跳轉 2、APP功能跳轉 3、系統功能調用 1、APP跳轉 1、設置App的URL Types(別的APP打開你的APP的地址)(項目 - TARGETS - APP icon - info - (拉到最下)URL Types ) URL Schemes:填上,你要給其他應用調用的URL地 ...
  • HBuilder開發iPad程式不能全屏顯示的解決方法: targets選擇HBuilder=>Deployment Info=> devices選擇Universal即可 ...
  • 1.現有的幾種埋點技術的實現原理和優劣分析 (1)代碼埋點:將收集數據的代碼直接寫在需要的地方,當用戶點擊某個控制項或者打開某個頁面時調用到該部分代碼完成數據的收集。 優勢:準確性高,收集數據和發送數據都能精確控制,同時能方便的設置自定義屬性,自定義控制項,自定義View等。 劣勢:埋點工作量大,更新代 ...
  • 項目開發中,有時候我們需要將本地的文件上傳到伺服器,簡單的幾張圖片還好,但是針對iPhone裡面的視頻文件進行上傳,為了用戶體驗,我們有必要實現斷點上傳。其實也不是真的斷點,這裡我們只是模仿斷點機制。 需求 既然需要上傳文件,那最好要有一個上傳列表界面,方面用戶對上傳中的文件進行實時管理。這裡我簡單 ...
  • 一直以來,大家都苦惱怎麼實現微信公眾帳號可以接入客服,也因此很多第三方介面平臺也開發客服系統CRM系統,不過不是操作複雜就是成本太高。今天分享一個低成本又簡便的方法,讓你的公眾帳號接入QQ客服。下麵介紹具體的方法:1、首先,這個方法目前微信最新的手機版本都是適用的,測試過微信5.0安卓版本還有點問題 ...
  • 在最近的移動端佈局當中,最炙手可熱的方式便是使用rem進行元素的佈局。以下便是從最近的文章中所總結出來的一點東西。 首先,我們必須有以下的疑問: rem的本質是什麼? rem如何實現自適應佈局? 如何根據設計稿來調整rem的值? rem佈局是能純CSS還是必須JS進行輔助? 接著,我們來稍微解答或者 ...
  • JavaScript是世界上最流行的腳本語言,因為你在電腦、手機、平板上瀏覽的所有的網頁,以及無數基於HTML5的手機App,交互邏輯都是由JavaScript驅動的。 簡單地說,JavaScript是一種運行在瀏覽器中的解釋型的編程語言。 在Web世界里,只有JavaScript能跨平臺、跨瀏覽器 ...
一周排行
    -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 ...