购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.10 对象内容的遍历

“既然你现在已经知道了如何使用for循环,那么现在我就来教你如何用这个技术遍历一个对象。”叶老说道。

“对象里面无非就是属性和函数,你的意思是给我一个对象,想办法获取它里面所有的数据(键值对)吗?”

“没错,假设有这样的一个场景:我需要判断一个对象中哪些东西是属性,哪些东西是函数。这就需要我依次获取这个对象里面的所有东西,然后判断谁是属性、谁是函数。”

“等等,就算拿到了这些东西,怎么才能判断谁是属性、谁是函数啊?我好像还没有这方面的法术。”

“不用担心,这个很简单,你只需要用一个typeof关键字就可以了。比如,我现在有一个字符串和一个函数。”说着,叶老写出了如下代码。

“然后,用typeof关键字包裹一下,再输出看看。”

     console.log( typeof(a) );
     console.log( typeof(fun) );

效果如图1-6所示。“看到了吧,这样就可以得到变量的类型了。 a是一 个字符串,所以typeof出来就是string fun是一个函数,所以typeof出来就是function 。接下来,我来跟你说说如何遍历一个对象。首先,新建一个简单的JavaScript对象。

图1-6 运行结果

“然后使用for循环进行遍历。”

“效果如图1-7所示。这个for循环和之前的写法是不同的。其中,p是一个随便取的名称,代表yeXiaoFan对象中遍历出来的属性名称。通过这种方法,我可以在事先不清楚对象有哪些属性的情况下把属性的名称都获取到。”叶老缓缓地说道。

图1-7 运行结果

“那么除了属性名称,属性的值也可以得到吗?”叶小凡眨了两下眼睛,好奇地问叶老。

“属性名称都得到了,你还愁没有属性值吗?”叶老一吹胡子,笑呵呵地反问。

“啊,我明白了, 既然有了属性名称,那么对象可以用点(.)的方式直接获取属性的值 当然,用中括号 ([]) 也是可以的 。”叶小凡恍然大悟。看到他如此表现,叶老也不禁点了点头。

“没错,是这样的。我们只需要把刚才的代码稍做修改就可以了。”说着,叶老又打出一段代码。

运行结果如下。

“成了,可是你刚才为什么不用点号?”叶小凡嘀咕道,可是转念一想就明白了其中的缘由。 因为遍历出来的属性名称是不确定的,而是用一个p变量指代,既然是变量,自然不可以用点号 因为如果写成yeXiaoFan.p,那么就会被认为是寻找一个名字叫作p的属性,然而事实上,p只不过是一个变量的名称而已 。换句话说,p随便叫什么都没关系,反正它只是一个变量的名称罢了, 真正重要的不是p变量叫什么,而是p变量指代的内容是什么

“我看到你的表情就明白你已经懂了,没错,你的猜想是正确的。 一旦遇到这种属性名称不确定的情况,就只能用一个变量代替,换句话说,不能用点号,只能用中括号 因此,当对象访问属性的时候,用中括号是更加灵活的 。”

“那么,我是不是应该时刻都用中括号,再也不用点号了?”

“那倒不一定,有些情况,或者说绝大多数情况还是用点号。因为大部分的情况下,你都是已经明确知道属性的名字叫什么了,那么毫无疑问,用点号是更加方便的,你说是吧。”

叶小凡想了一会儿,然后点了点头。 nKu4ksAG0XVZ/1l0aMEtz7sBa2yTzFn8+YcgEVvJhPKruRNIGUYH32+xDKCxzDHA

点击中间区域
呼出菜单
上一章
目录
下一章
×