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

本文详细介绍了JavaScript中的对象概念,包括内建对象如String和Date等,本地对象如Function和Array等,以及宿主对象如BOM和DOM对象。此外,还通过示例展示了如何递归遍历复杂的对象结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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", "班长"]

 

转载于:https://www.cnblogs.com/cmy1996/p/9192945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值