JSCRIPT MANUAL

Microsoft® JScript™
Создание собственных объектов
 Описание JScript 
 Пред. 


Для создания нового объекта, необходимо сначала определить его, присвоить ему свойства и, если необходимо, методы. Следующий пример создает объект pasta (макароны). Существует ключевое слово this, используемое для обращения к текущему объекту.
function pasta( grain, grain2, width, shape, shapenum, extent, egg )
{
  this.length = 7;   // Размер, количество свойств объекта, это свойство не включает само себя в размерность.
  this.grain = grain;   // Какие гранулы включены? (Строка)
  this.grain2 = grain2;   // Добавление другой муки? (Строка)
  this.width = width;     // Длина? (Число)
  this.shape = shape;   // Форма изделия? (Строка)
  this.shapenum = shapenum;  // Количество видов фигур? (Число)
  this.extent = extent;    // Количество штук? (Число)
  this.egg = egg;  // Применение яичного порошка? (Булево значение)
}
Однажды объявив объект, можно создавать новые экземпляры с помощью оператора new.
var spaghetti = new pasta("wheat", "", 0.2, "circle", 9, 30, true);
var linguine = new pasta("wheat", "", 0.3, "oval", 17, 30, true);
Можно добавлять свойства к одному экземпляру объекта, изменять экземпляр, но эти свойства не являются свойствами объекта, и не обнаруживаются в других экземплярах, если они не добавлены явно. Если требуется добавить свойства объекту для всех экземпляров, следует объявить их в определении объекта.
// Дополнительные свойства spaghetti.
spaghetti.color = "соломенный";
spaghetti.drycook = 7;
spaghetti.freshcook = 0.5;

var chowFun = new pasta("rice", "", 3, "flat", , 12, false); 
/*
Ни объект chowFun, ни объект linguine, ни объект pasta   
не содержат трех дополнительных свойств объекта spaghetti.
*/
Включение методов при определении
При определении объекта, в него можно включать методы. В следующем примере создается объект, содержащий массив строк и метод. Метод добавляет строку в массив, увеличивая размер объекта.
function addItem(newItem)  // Определение функции расширения списка
{
    this.length += 1;  // Увеличение размера массива.
    this[(this.length-1)] = newItem;  // Добавление нового элемента, сохраняя нумерацию.
}

function shoppingList(firstItem) // Объявление объекта "Список покупок".
{
    this.length = 2;  // Количество свойств объекта, исключая само свойство размера.
    this.addItem = addItem;   // Включение функции addItem как метода.
    this[(this.length-1)] = firstItem;  // Первому элементу присвоен номер 1.
}

var myList = new shoppingList("Молоко");
myList.addItem("Яйцо");  // Применение метода для добавления "Яйцо", элементу присвоен номер 2.
myList.addItem("Крупа");  // "Крупа" получает номер 3.
В данном случае, содержание массива следующее:
  • myList[length] равно 4
  • myList[addItem] является функцией addItem
  • myList[1] is Молоко
  • myList[2] is Яйцо
  • myList[3] is Крупа
Обратите внимание, что индексирование не так точно, как Вы могли бы ожидать. Если выполняется цикл for...in в этом массиве, цикл выполняет итерации в порядке, приведенном здесь, и переменная цикла имеет первоначальное значение "длиной" 0.


Перевод © 2000-2013 pauk R-T-F-M.info. Все права защищены.