Fix inspect for the special case of an Object that inherits from Array, but has other properties.

This commit is contained in:
Tim Caswell 2009-12-31 11:41:35 -06:00 коммит произвёл Ryan Dahl
Родитель 642c2773a7
Коммит 732c6f2036
2 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -92,7 +92,7 @@ var formatter = function(value, indent, parents) {
if (parents.indexOf(value) >= 0) return '[Circular]';
parents.push(value);
if (value instanceof Array) {
if (value instanceof Array && Object.keys(value).length === value.length) {
return formatObject(value, indent, parents, '[]', function(x, f) {
return f(value[x]);
});

Просмотреть файл

@ -13,6 +13,7 @@ assert.equal('null', inspect(null));
assert.equal("\"\\n\\u0001\"", inspect("\n\u0001"));
assert.equal('[]', inspect([]));
assert.equal('[]', inspect(Object.create([])));
assert.equal('[\n 1,\n 2\n]', inspect([1, 2]));
assert.equal('[\n 1,\n [\n 2,\n 3\n ]\n]', inspect([1, [2, 3]]));
@ -23,6 +24,9 @@ assert.equal('{\n "a": 1,\n "b": 2\n}', inspect({a: 1, b: 2}));
assert.equal('{\n "a": {}\n}', inspect({'a': {}}));
assert.equal('{\n "a": {\n "b": 2\n }\n}', inspect({'a': {'b': 2}}));
var value = {}
var value = {};
value['a'] = value;
assert.equal('{\n "a": [Circular]\n}', inspect(value));
value = Object.create([]);
value.push(1);
assert.equal('{\n "0": 1,\n "length": 1\n}', inspect(value));