Добавляем...


  Расширение массивов с помощью прототипов
   В JavaScript все не примитивные данные происходят от объекта Object, который обсуждался в предыдущей главе. Именно это позволяет добавлять новые методы и свойства в любые объекты. Например, можно добавить в массивы специальный метод display(), который будет информировать пользователя о содержимом массива.

function myDisplay()
if (this.length != 0) alert(this.toString()) ;
else
alert("Массив пустой");
}
Array.prototype.display = myDisplay;

В результате появляется возможность печатать значения массивов, используя новый метод display(), как в следующем примере:

var myArray = [4,5,7,32];
myArray.display();
// отображает значения массива

var myArray2 = [];
myArray2.display();
// отображает строку "Массив пустой"

   С помощью прототипов можно "исправить" недостатки методов pop() и push() в браузерах, появившихся до Internet Explorer 5.5. Например, чтобы добавить метод pop() в старые браузеры или заменить встроенный метод pop() в более новых браузерах, можно использовать

function myPop()
{
if (this.length != 0)
{
var last = this[this.length-1];
this.length--;
return last;
}
}
Array.prototype.pop = myPop;

Наша реализация метода push() немного сложнее:

function myPush()
{
var numtopush = this.push.arguments.length;
var arglist = this.push.arguments;
if (numtopush > 0)
{
for (var i=0; i < numtopush; i++)
{
this.length++;
this[this.length-1] = arguments[i];
}
}
}
Array.prototype.push = myPush;

    Собственные функции можно использовать для решения проблем со старыми браузерами, но не думайте, что с помощью прототипов можно решить все проблемы обработки массивов в ранних версиях JavaScript. Серьезные недочеты в обработке массивов JavaScript, замеченные, например, в Netscape 2, скорее всего не удастся исправить с помощью прототипов, так как последние тоже могут иметь недостатки. Но если вы захотите добавить поддержку push() и pop() в Internet Explorer 4 или Netscape 3, то предлагаемый программный код должен выполнять свою задачу.
назад: Многомерные массивы далее:


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика