JavaScript权威指南(第6版) 8.8分
读书笔记 5.5.4 for/in
晓慧读书

在执行for/in语句的过程中,js解释器先计算object表达式,如果表达式为null或者undefined,js解释器将会跳过循环并执行后续的代码。如果表达式等于一个原始值,这个原始值将会转换为与之对应的包装对象

js会依次枚举对象的属性来执行循环,然而在每次循环之前,js都会计算variable的值,并将属性名赋值给它

其实for in 循环并不会遍历对象的所有属性,只有可枚举属性才会遍历到,代码中定义的所有属性和方法都是可枚举的,对象可以继承其他对象的属性,那些继承的自定义属性可以使用for in遍历到

如果循环体中定义了对象的新属性,这些属性也是不可以枚举到的

js厂商规定,先定义的属性先枚举,如果对象属性继承自多个“原型”,也就是说她的原形链上有多个对象,那么链上面的每一个对象的属性遍历也是按照特定顺序执行的

0
《JavaScript权威指南(第6版)》的全部笔记 133篇
豆瓣
免费下载 iOS / Android 版客户端