Здравствуйте!
Несмотря на то, что вы создаёте два разных экземпляра, внутри конструктора вы "управляете" общим для них обоих объектом-прототипом, его свойствами, т.к. непосредственно у экземпляров нет своих "собственных" свойств с именами i и j. Всё стандартно.
— При первом вызове конструктора массив i пустой, поэтому в алерте undefined.
— Перед выходом из конструктора заталкиваем в массив i элемент со значением 1.
— При втором вызове конструктора в алерте виден тот самый первый элемент со значением 1.
Пара ссылок на эту тему и на тему подходов к созданию экземпляров:
http://weblogs.asp.net/bleroy/archive/2006/10/07/Careful-with-that-prototype_2C00_-Eugene.aspx
http://weblogs.asp.net/bleroy/archive/2006/10/11/From-closures-to-prototypes_2C00_-part-1.aspx
http://weblogs.asp.net/bleroy/archive/2006/10/14/From-closures-to-prototypes_2C00_-part-2.aspx