JSCRIPT MANUAL

Microsoft® JScript™
Расширения создания объектов
 Описание JScript
Пред.
След.


Применение конструкторов при создании объектов
В Microsoft JScript для создания классов объектов используются конструкторы. Вызывается конструктор с помощью инструкции new.

Особый случай конструктора - создание анонимных функций. Анонимная функция - функция, не имеющая имени. Вы можете применять конструктор для создания функций "на лету", например, как инструкцию внутри другой функции. Такая функция, которая вызывается только из одного расположения, не нуждается в имени.

В следующем примере такая анонимная функция генерирует одну строку списка "Имя-Электронный адрес". Она проверяет значение переменной firstNameFirst , чтобы решить, разместить сначала имя или фамилию, а также значение переменной emailNameFirst , чтобы решить, разместить сначала имя или адрес электронной почты. В примере предполагается, что значения firstNameFirst и emailNameFirst определены в другом месте.

for (j = 1; j < addressList[length]; j++) 
{
oneListingLine = new Function(emailNameFirst, firstNameFirst, addressList, j, theName = new Function(firstNameFirst, addressList, j, var theName=(addressList[j].firstName + addressList[j].lastName); 
if(firstNameFirst)
      {
      theName=(addressList[j].firstName + addressList[j].lastName);
      },) ; 
if (emailNameFirst) 
      {
theListing = addressList[j].emailName+ ":\t" + theName 
      } else theListing = theName + ":\t" + addressList[j].emailName; return theListing;)
document.write(oneListingLine + "<br>");
}
Запись конструкторов
Для написания собственного конструктора используется ключевое слово this в пределах конструктора для обращения к только что созданному объекту. Конструктор инициализирует объект.

В следующем примере конструктора индекс начинается с нуля, но это не обязательно. Нумерация индексов может начинаться и с единицы, например, если вы желаете указывать параметр, который указывает размер массива или объекта. Это называется степенью для отличия от автоматически поддерживаемого параметра длины объекта Array( ). Если вы записываете код, который добавляет свойства к массиву, то вы должны обновить параметр степени (или его эквивалент), так как этот параметр не поддерживается в JScript. Обратите внимание, что даже в таком чрезвычайно простом примере используются и объектные (точечные), и индекс-стили (для массивов) системы обозначений, для того, чтобы обратиться к текущему объекту.

function MakeStringArray(length) {
this.extent = length;
for (iNum = 0; iNum < length; i++) {
this[iNum] = "";
}
}

// Применение конструктора для создания и инициализации массива.
myStringArray = new MakeStringArray(63);
Применение прототипов при создании объектов
При записи определения объекта можно использовать свойства прототипа для создания свойств, которые обычно поддерживаются всеми объектами, созданными по определению. Свойства прототипа копируются по ссылке в каждый объект класса, они имеют одни и те же значения для всех объектов класса. Однако, можно изменить значения свойств прототипа в одном объекте, новые значения переопределяются по умолчанию, но лишь в одном экземпляре объекта. На другие объекты этого класса это изменение не действует.

В принципе, Вы можете определять дополнительные свойства для объектов, которые являются частью JScript. Например, если необходима особая постоянная для вычислений, отсутствующая среди свойств объектов Math и Number, можно определить ее непосредственно и затем назначать в соответствующие прототипы объекта или свойство прототипа объекта.

Math.prototype.Avogadro = 6.0232E23;
function howManyMolecules(wtGrams,molWt) {
return ((wtGrams/molWt)*Math.prototype.Avogadro);
}
document.write("Всего " + howManyMolecules(window.prompt("Масса в  граммах?",0),window.prompt
("Каков молекулярный вес?",0)) +
 " молекул.");
По сути, можно определить функцию, назначив как метод String.prototype, и использовать его в любой строке в любом месте сценария. Следующий пример принимает массив Периодической системы элементов, называемый "theElements" и определенный в другом месте сценария, содержащий символы элементов, их названия, атомный вес и некоторую другую информацию.

function atomName(theSymbol) {
return(theElements[theSymbol].fullName);
}

String.prototype.atomName = atomName;

function decodeFormula(theFormula) {
var theCurrentPiece = "";
var theDecodedFormula = "";
for (i = 1; i = theFormula.length ; i++);
if (theFormtheCurrentPiece) 
// Инструкции кода для разделения строки в массив символов и чисел. 
// Цикл для трансляции декодированной строки. Условия: 
theDecodedFormula += formula[n].number
theDecodedFormula += " ";
theDecodedFormula += formula[n].symbol.prototype.atomName;
theDecodedFormula += " "
// Конец цикла.

return theDecodedFormula;
}

decodeFormula(window.prompt("Формула?","Al2O3"));


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