• JavaScript对象---递归遍历对象


    JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...

    此外,JavaScript 允许自定义对象。

    JavaScript 对象

    JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

    对象只是带有属性和方法的特殊数据类型。

    在 ECMAScript 中,不能访问对象的物理表示,只能访问对象的引用。每次创建对象,存储在变量中的都是该对象的引用,而不是对象本身。

    本地对象

    ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。它们包括:

    • Object
    • Function
    • Array
    • String
    • Boolean
    • Number
    • Date
    • RegExp
    • Error
    • EvalError
    • RangeError
    • ReferenceError
    • SyntaxError
    • TypeError
    • URIError

    内置对象

    ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。

    宿主对象

    所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。

    所有 BOM 和 DOM 对象都是宿主对象。

    var obj = { 
                    a:{ 
                        name : "maoguotao", 
                        age : 18, 
                        sex : 'M', 
                    },
                    b:{ 
                        name : "maoshuqin", 
                        age : 18, 
                        sex : 'M', 
                    },
                    c:{ 
                        name : "MGT360124", 
                        age : 18, 
                        sex : 'M',
                        title : { 
                            job:"班长"
                        } 
                    } 
                }; 
                
                //递归遍历对象
                var arr = []; 
                function f( obj ) { 
                    for( var i in obj ) { 
                        if ( typeof obj[i] === "object" ) { 
                            f ( obj[i] ); 
                        }else{ 
                            arr.push( obj[i] ); 
                        } 
                    } 
                } 
                
                f( obj );
                
                console.log(arr);//["maoguotao", 18, "M", "maoshuqin", 18, "M", "MGT360124", 18, "M", "班长"]
  • 相关阅读:
    微信小程序右上角胶囊的位置
    NLP复习大纲
    网站收藏
    css中如何调整插入背景图片的大小
    禁止Power Apps Canvas用户通过SharePoint Online UI界面访问站点list
    c++ vector基本知识
    c++ map基本知识
    c++ string操作
    python学习笔记30:操作excel
    c++, 如何run一个c++程序
  • 原文地址:https://www.cnblogs.com/cmy1996/p/9192945.html
Copyright © 2020-2023  润新知