Node.js属性遍历顺序

在Node.js中,迭代对象属性的顺序是什么?它是否在它自己的属性或其他方式之前迭代inheritance的属性?

另外,这可能会在未来又改变,我需要编写一些像这样的function检测下面?

var util = require("util"); function testOwnFirst () { function A () { this.a = 1; } function B () { this.b = 2; } util.inherits(B, A); var objB = new B(); for (var prop in objB) { if(prop === "a") { // Traversal starts with inherited properties first return false; } // Traversal starts with own properties first return true; } } exports.ownFirst = testOwnFirst(); 

ECMAScript标准很清楚地表明一个对象是一个无序的属性集合(参见4.3.3节:ecma-international.org/publications/files/ECMA-ST-ARCH/…),所以你不应该依赖属性的sorting。 节点(和底层的V8引擎)将不提供任何保证。

最好你可以做它遍历所有的属性,并调用hasOwnProperty()与每一个看哪些是inheritance,哪些不是