Langalier,
Не совсем то, что я имел в виду, вот например попробуем создать конструктор myArray, который бы выдавал нам массив, но имел расширенные (перегруженные) методы работы с элементами. Далеко ходить не будем, возьмем функцию из статьи:
function extend(Child, Parent) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
Теперь напишем конструктор объектов myArray:
var myArray = function() {
this.getLastElement = function() {
return this[this.length-1];
}
}
// И наследуем массив:
extend(myArray, Array);
Посмотрим, что получилось:
// Создадим наш объект:
var a = new myArray();
// Добавим ему элементов, через свойства:
a[0] = "Привет";
a[1] = "Мир";
// Пробуем
alert(a.getLastElement()); // undefined - ничего
// А длина?
alert(a.length); // 0 - пусто
// Теперь добавим через методы:
a.push("Пока");
a.push("Ад");
// Пробуем
alert(a.getLastElement()); // "Ад"
// А длина?
alert(a.length); // 2, все в порядке
Другими словами, вам не удастся наследовать всю функциональность массивов, когда добавление элемента напрямую увеличивало длину массива.