Cita:  - @aijoona: En JavaScript no existen los arrays asociativos ...
- @marlanga: ... bueno, en javascript, si nos ponemos finos, TODO son objetos ...
- @aijoona: ...un Array es un Object, pero no al revés...
    Los muchos, que como yo, intentamos aprender javascript a fuerza de tutorial y precisamente con  la guía de librosweb.es nos habremos encontrado con que definen a los objetos como arrays asociativos, cita textual: 
"Técnicamente, un objeto de JavaScript es un array asociativo formado por las propiedades y los métodos del objeto. Así, la forma más directa para definir las propiedades y métodos de un objeto es mediante la notación de puntos de los arrays asociativos." 
Mi pregunta es:
Si con paises['str'] añadimos propiedades a un objeto y no elementos a un array ¿entonces porque length devuelve 0 o undefined según se trate de un array o de un objeto y en todo caso no devueve undefined para ambos?     
Código Javascript
:
Ver originalvar paises = new Array();
paises['ur'] = 'Uruguay';
paises['ch'] = 'Chile';
paises['co'] = 'Colombia';
// parecería que añadimos valores al array
 
var provincias = new Object();
provincias["sf"] = "santa fe";
provincias["bs"] = "buenos aires";
provincias["ch"] = "chaco";
//añadimos propiedades al objeto
 
window.onload = function(){
    console.log(paises.co);     //pero en realidad añadimos propiedades al objeto.
    console.log(paises.length); // 0 
    console.log(provincias.length); // undefined 
    console.log(paises['co']);  //colombia
}
  
Desde ya agradecido, cualquier link es bienvenido