23c4637b

объекты при вызове существующей функции.


Можно присваивать различные this- объекты при вызове существующей функции. this относится к текущему объекту, вызывающему объекту. С помощью apply Вы можете записать метод только один раз и затем наследовать его в другом объекте без необходимости повторно записывать этот метод для нового объекта.
apply очень похож на call, за исключением поддерживаемых типов аргументов. Вы можете использовать массив arguments вместо именованного набора параметров. С помощью apply Вы можете использовать литерал массива, например, apply(this, [name, value]), или объект Array, например, apply(this, new Array(name, value)).
Вы можете также использовать arguments для параметра argArray.
arguments является локальной переменной функции. Он может использоваться для всех неспецифицированных аргументов вызываемого объекта. Таким образом, Вы не обязаны знать аргументы вызываемого объекта, когда используете метод apply. Вы можете использовать arguments для передачи всех аргументов вызываемому объекту. Вызванный объект тогда отвечает за обработку этих аргументов.


Вы можете обращаться к аргументам функции, используя массив arguments. Этот массив содержит вхождение для каждого аргумента, передаваемого функции. Например, если функции передаются три аргумента, Вы можете обратиться к аргументам так:
arguments[0]
arguments[1]
arguments[2] Массиву arguments может предшествовать также имя функции:
myFunc.arguments[0]
myFunc.arguments[1]
myFunc.arguments[2] Массив arguments доступен только внутри тела функции. Попытка получить доступ к массиву arguments вне объявления функции приведёт к ошибке.
Вы можете использовать массив arguments при вызове функции с бо́льшим количеством аргументов, чем она принимает по формальному объявлению. Эта техника используется для тех функций, которым можно передавать переменное количество аргументов. Вы можете использовать arguments.length для определения количества аргументов, передаваемых функции, и последующей обработки каждого аргумента с использованием массива arguments. (Для определения количества аргументов, объявленных при определении функции, используйте свойство Function.length.)
Массив arguments имеет следующие свойства:
СвойствоОписание
arguments.callee Специфицирует тело функции, исполняемой в данный момент.
arguments.caller Специфицирует имя функции, вызвавшей исполняемую в данный момент функцию. (Не рекомендуется.)
arguments.length

Специфицирует количество аргументов, передаваемых функции.

Свойство callee доступно только в теле функции.
Ключевое слово this не относится к исполняемой в данный момент функции. Используйте свойство callee для обращения к функции в теле этой функции.


caller больше не используется.
Свойство caller доступно только в теле функции.
Если исполняемая в данный момент функция была вызвана с верхнего уровня программы JavaScript, значение caller будет null.
Ключевое слово this не относится к исполняемой в данный момент функции, поэтому Вы обязаны к функциям и объектам Function по имени, даже в теле функции.
Свойство caller является ссылкой на вызывающую функцию, поэтому,
  • Если Вы используете её в строковом контексте, Вы получите результат вызова functionName.toString. То есть декомпилированную каноническую исходную форму функции.
  • Вы также можете вызвать вызывающую функцию, если знаете аргументы, которые ей могут быть нужны. Таким образом, вызываемая функция может вызвать вызывающую функцию, не зная её имени, предполагая, что все её вызыватели имеют одну форму и размер и что они не будут необусловленно вызывать вызываемую функцию ещё раз (что может привести к бесконечной рекурсии).



arguments. length выдаёт количество аргументов, реально переданных функции. В отличие от него, свойство Function.length указывает, сколько аргументов функция ожидает.


arity является внешним относительно функции и указывает, какое количество аргументов функция ожидает. В отличие от него, arguments.length предоставляет количество аргументов, реально переданных функции.


Вы можете присвоить разные объекты this при вызове существующей функции. this ссылается на текущий (вызывающий) объект.
С помощью call Вы можете записать метод однократно и затем наследовать его в другом объекте без необходимости записывать его ещё раз для нового объекта.


length является внешним относительно функции и указывает, сколько аргументов функция ожидает. В противоположность ему, arguments.length является локальным относительно функции и представляет количество аргументов, реально переданных функции.


Вы можете добавлять в существующий класс новые свойства или методы, добавляя их в прототип, ассоциированный с конструктором данного класса. Синтаксис добавления нового свойства или метода таков:
fun.prototype.name = value где
fun Имя конструктора объекта, который вы хотите изменить.
name Имя создаваемого свойства или метода.
value Значение, присвоенное первоначально новому свойству или методу.
Если Вы добавляете свойство в прототип объекта, то все объекты, созданные этой функцией-конструктором этих объектов, будут иметь это новое свойство, даже если объекты существовали до создания нового свойства. Например, предположим, имеются такие операторы:
var array1 = new Array();
var array2 = new Array(3);
Array.prototype.description=null;
array1.description="Contains some stuff"
array2.description="Contains other stuff" После установки свойства в прототипе все объекты, созданные с помощью Array, будут иметь это свойство:
anotherArray=new Array()
anotherArray.description="Currently empty"


Метод toSource возвращает следующие значения:
  • Для встроенного объекта Function метод toSource возвращает следующие строки, указывающие на недоступность исходного кода: function Function() {
          [native code]
       }
  • Для специальных функций метод toSource возвращает исходный код JavaScript, который определяет объект как строку.
Этот метод обычно вызывается JavaScript внутренне, а не явно в коде. Вы можете вызывать toSource при отладке для проверки содержимого объекта.


Объект Function переопределяет метод toString объекта Object; он не наследует Object.toString. Для объектов Function метод toString возвращает строку, представляющую объект.
JavaScript вызывает метод toString автоматически, если Function представлен как текстовое значение или если на Function имеется ссылка при конкатенации строк.
Для объектов Function встроенный метод toString декомпилирует функцию обратно в исходный код JavaScript, который определяет функцию. Эта строка содержит ключевое слово function, список аргументов, фигурные скобки и тело функции.
Например, имеется следующий код, где определяется тип объектов Dog и создаётся theDog, объект типа Dog:
function Dog(name,breed,color,sex) {
this.name=name
   this.breed=breed
   this.color=color
   this.sex=sex
}theDog = new Dog("Gabby","Lab","chocolate","girl") Когда Dog используется в строковом контексте, JavaScript автоматически вызывает функцию toString, которая возвращает следующие строки:
function Dog(name, breed, color, sex) { this.name = name; this.breed = breed; this.color = color; this.sex = sex; }


Каждый элемент формы имеет свойство form, которое является ссылкой на родительскую форму элемента. Это свойство в основном используется в обработчиках событий, где Вам может понадобиться обратиться к другому элементу на этой же форме.


Для изменения текущего URL окна без генерации вхождения в history Вы можете использовать метод Location.replace. При этом текущая страница замещается другой без генерации вхождения в history. См. Location.replace.
Вы можете обратиться ко вхождениям в history через использование массива window.history. Этот массив содержит вхождение для каждого вхождения в history в порядке исходного кода. Каждое вхождение массива является строкой, содержащей URL. Например, если список history содержит три именованных вхождения, эти вхождения отражаются как history[0], history[1] и history[2].
Если Вы получаете доступ к массиву history без специфицирования элемента массива, браузер возвращает строку HTML, которая выводит таблицу URLs, каждый из которых является ссылкой.


Этот метод выполняет такую же акцию, что и пользователь, нажимая кнопку Back в браузере. Метод back это то же, что и history.go(-1).


Этот метод выполняет такое же действие, что и пользователь, нажимающий кнопку Forward в браузере. Метод forward это то же, что и history.go(1).


Метод go переходит к точке списка history, определённой специфицированным параметром.
Если аргумент delta равен 0, браузер перезагружает текущую страницу. Если целое число больше 0, метод go загружает URL, находящийся на специфицированное число вхождений впереди в списке history; иначе (если меньше 0) он загружает URL, находящийся на специфицированное число вхождений назад в списке history.
Аргумент location это строка. Используйте location для загрузки ближайшего вхождения из history, чей URL содержит location в качестве подстроки. Совпадение URL с параметром location делается с учётом регистра. Каждый раздел URL содержит свою информацию. См. в Location описание компонентов URL.
Метод go создаёт новое вхождение в списке history. Для загрузки URL без создания вхождения в списке history используйте Location.replace.


Позиция и размер изображения в документе устанавливаются при отображении документа web-браузером и не могут быть изменены с помощью JavaScript (свойства width и height являются для данного объекта read-only). Вы можете изменить выводимое изображение, установив свойства src и lowsrc. (См. описание Image.src и Image.lowsrc.)
Вы можете использовать JavaScript для создания анимации из объекта Image, выполняя повторяющуюся установку свойства src, как показано далее в Примере 4. Анимация JavaScript работает медленнее, чем GIF-анимация, поскольку GIF-анимация это один файл; при анимации JavaScript каждый фрэйм является отдельным файлом, и каждый файл обязан быть загружен из сети (установление связи с хостом, перенос данных...).
В основном объект Image, создаваемый конструктором Image, предназначен для загрузки изображения по сети (и его декодирования) до того момента, когда оно понадобится для отображения. Затем, если Вам нужно вывести изображение в существующей ячейке изображения, Вы устанавливаете в свойство src выводимого изображения то значение, которое используется для полученного ранее изображения:
myImage = new Image()
myImage.src = "seaotter.gif"
...
document.images[0].src = myImage.src Результирующее изображение будет получено из кэша, а не загружено по сети, что значительно сэкономит время, необходимое для загрузки и декодирования изображения. Можно использовать эту технику для создания сложных анимаций или выводить одно из нескольких изображений на основе ввода данных в форму.


Свойство border отражает атрибут BORDER тэга IMG. Для изображений, созданных конструктором Image, значение свойства border равно 0.


Свойство height отражает атрибут HEIGHT тэга IMG. Для изображений, созданных конструктором Image, значение свойства height является реальной, а не отображаемой, высотой изображения.


Свойство hspace отражает атрибут HSPACE тэга IMG. Для изображений, созданных конструктором Image, значение свойства hspace равно 0.


Свойство lowsrc первоначально отражает атрибут LOWSRC тэга IMG. Браузер загружает меньшее изображение, специфицированное свойством lowsrc, а затем замещает его изображением большего размера, специфицированным в свойстве src. Вы можете изменить свойство lowsrc в любое время.


Представляет значение атрибута NAME. Для изображений, созданных конструктором Image, значение свойства name равно null.


Свойство src первоначально отражает атрибут SRC тэга IMG. Установка свойства src начинает загрузку нового URL в область изображения (и прерывает передачу любых данных изображения, которые загружались в ту же самую область). Следовательно, если Вы планируете изменить свойство lowsrc, Вы должны сделать это до установки свойства src.
Если URL в свойстве src ссылается на изображение, которое имеет размер, отличный от размера ячейки, в которую оно загружается, изображение-источник масштабируется.
Если Вы изменяете свойство src выведенного изображения, новое изображение, которое Вы специфицируете, выводится в области, определённой для оригинального изображения. Например, объект Image первоначально выводит файл beluga.gif:
<IMG NAME="myImage" SRC="beluga.gif" ALIGN="left"> Если Вы устанавливаете myImage.src='seaotter.gif', изображение seaotter.gif масштабируется для вмещения в то же пространство, которое первоначально было использовано для beluga.gif, даже если seaotter.gif не имеет те же размеры, что и beluga.gif.
Вы можете изменить свойство src в любое время.


Свойство vspace отражает атрибут VSPACE тэга IMG. Для изображений. созданных конструктором Image, значение свойства vspace равно 0.


Свойство width отражает атрибут WIDTH тэга IMG. Для изображений, созданных конструктором Image, значение свойства width является реальной фактической, а не отображаемой, шириной изображения.


Объект JavaArray является экземпляром Java-массива, который создаётся в или передаётся в JavaScript. JavaArray является оболочкой для экземпляра; все ссылки на этот экземпляр массива делаются через JavaArray.
Вы обязаны специфицировать объект класса, такой как объект, возвращаемый java.lang.Object.forName для параметра componentType экземпляра newInstance, если Вы используете этот метод для создания массива. Вы не можете использовать объект JavaClass для параметра componentType.
Используйте индексы с базой 0 для доступа к элементам объекта JavaArray так же, как Вы делаете при доступе к элементам массива в языке Java. Например:
var javaString = new java.lang.String("Hello world!");
var byteArray = javaString.getBytes();
byteArray[0] // возвращает 72
byteArray[1] // возвращает 101 Любые Java-данные, перенесённые в JavaScript, конвертируются в типы данных JavaScript. Если JavaArray передаётся обратно в Java, оболочка с массива снимается, и он может использоваться кодом Java. См. в книге Клиентский JavaScript. Руководство. информацию о конвертации типов данных.


В отличие от Array.length, JavaArray. length является свойством только для чтения. Вы не можете изменить значение свойства JavaArray.length, поскольку массивы Java всегда имеют фиксированное количество элементов.


Метод toString наследуется из объекта Object и возвращает следующее значение:
[object JavaArray]


Объект JavaClass является ссылкой на один из классов Java-пакета, такого как netscape.javascript.JSObject. Объект JavaPackage является ссылкой на Java-пакет, такой как netscape.javascript. В JavaScript иерархия JavaPackage и JavaClass отражает иерархию пакетов и классов Java.
Вы обязаны создать оболочку вокруг экземпляра java.lang.Class, прежде чем передать его в качестве параметра Java-методу -- JavaClass-объекты не конвертируются автоматически в экземпляры java.lang.Class.


Объект JavaObject является экземпляром Java-класса, который создаётся в или передаётся в JavaScript. JavaObject является оболочкой экземпляра; все ссылки на экземпляр класса делаются через JavaObject.
Любые данные Java, перенесённые в JavaScript, конвертируются в типы данных JavaScript. Если JavaObject передаётся обратно в Java, оболочка с него снимается, и он может использоваться в коде Java. См. в книге Клиентский JavaScript. Руководство. информацию о конвертации типов данных.


В Java пакет является коллекцией Java-классов или других Java-пакетов. Например, пакет netscape содержит пакет netscape.javascript; пакет netscape.javascript содержит классы JSObject и JSException.
В JavaScript объект JavaPackage является ссылкой на Java-пакет. Например, ссылкой на netscape является JavaPackage.
netscape.javascript является одновременно объектом JavaPackage и свойством из netscape JavaPackage.
Объект JavaClass является ссылкой на один из классов пакета, такой как netscape.javascript.JSObject. Иерархия JavaPackage и JavaClass отражает иерархию пакетов и классов Java.
Хотя пакеты и классы, содержащиеся в JavaPackage, являются его свойствами, Вы не можете использовать оператор for...in для перечисления их, как это можно сделать в других объектах.


Каждый слой имеет свойство background, значением которого является объект image, атрибут src которого это URL, указывающий на изображение, используемое для размножения и заполнения фона. Значение null будет тогда, когда слой не имеет фона. Например:
layer.background.src = "fishbg.gif";


Свойство bgColor выражается как 16-ричный RGB- триплет или как строковой литерал (см. книгу Клиентский JavaScript. Руководство). Это свойство является отражением в JavaScript атрибута BGCOLOR тэга BODY.
Вы можете установить свойство bgColor в любой момент.
Если Вы выражаете цвет как 16-ричный RGB-триплет, Вы обязаны использовать формат rrggbb. Например, 16-ричные значения RGB для цвета salmon - red=FA, green=80 и blue=72, и RGB-триплет для salmon будет, соответственно, "FA8072".

Содержание раздела