8e589012

eval как метод объекта Object


eval как метод объекта Object и каждого объекта, происходящего от Object, не рекомендуется применять. Используйте функцию верхнего уровня eval.


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


Каждый объект имеет метод toString, который автоматически вызывается, если объект представляется как текстовое значение или если на объект ссылаются при конкатенации строк. Например, следующие примеры требуют, чтобы theDog был представлен как строка:
document.write(theDog)
document.write("The dog is " + theDog) По умолчанию метод toString наследуется каждым объектом - потомком объекта Object. Вы можете переопределить этот метод для создаваемых Вами специальных объектов. Если Вы не переопределяете toString в специальном объекте, toString возвращает [object type], где type это тип объекта или имя функции-конструктора, которая создаёт объект.
Например:
var o = new Object()
o.toString // возвращает [object Object] Встроенные методы toString. Каждый встроенный объект ядра JavaScript переопределяет метод toString объекта Object для возвращения соответствующего значения. JavaScript вызывает этот метод везде, где необходимо конвертировать объект в строку.
Некоторые встроенные объекты серверного и клиентского JavaScript не переопределяют метод toString объекта Object. Например, для Image-объекта sealife, определённого ниже, sealife.toString() возвратит [object Image].
<IMG NAME="sealife" SRC="images\seaotter.gif" ALIGN="left" VSPACE="10"> Переопределения метод toString по умолчанию. Вы можете создать функцию, вызываемую вместо метода toString по умолчанию. Метод toString не принимает аргументов и должен возвращать строку. Создаваемый Вами метод toString может иметь любое значение, но оно будет более употребимым, если будет содержать информацию об объекте.


Следующий код определяет тип объектов 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") Если Вы вызываете метод toString в этом специальном объекте, он возвращает значение по умолчанию, унаследованное от Object:
theDog.toString() //возвращает [object Object] Следующий код создаёт функцию dogToString, которая будет использована для переопределения метода toString по умолчанию. Эта функция генерирует строку, содержащую каждое свойство, в форме "property = value;".
function dogToString() {
   var ret = "Dog " + this.name + " is [\n"
   for (var prop in this)
      ret += " " + prop + " is " + this[prop] + ";\n"
   return ret + "]"
} Следующий код присваивает определённую пользователем функцию методу toString объекта:
Dog.prototype.toString = dogToString После этого в любое время, когда theDog используется в строковом контексте, JavaScript автоматически вызывает функцию dogToString, которая возвращает следующую строку:
Dog Gabby is [
  name is Gabby;
  breed is Lab;
  color is chocolate;
  sex is girl;
] Метод toString объекта обычно вызывается JavaScript, но Вы можете и сами вызвать его:
var dogString = theDog.toString()


Отладчик JavaScript имеет функциональность, похожую на функциональность, предоставляемую этим методом, а также другие опции отладки. Об отладчике см. Getting Started with Netscape JavaScript Debugger.
По умолчанию этот метод наследуется каждым объектом - потомком объекта Object.


JavaScript вызывает метод valueOf для конвертации объекта в примитивное значение. Вам редко нужно будет вызвать метод valueOf самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, где ожидается примитивное значение.
По умолчанию метод valueOf наследуется каждым объектом - потомком объекта Object. Каждый встроенный объект ядра языка переопределяет этот метод, чтобы возвращать соответствующее значение. Если объект не имеет примитивного значения, valueOf возвращает сам объект, который выводится так:
[object Object] Вы можете также использовать valueOf в Вашем коде для конвертации встроенного объекта в примитивное значение. Если Вы создаёте специальный объект, Вы можете переопределить Object.valueOf для вызова специального метода вместо метода по умолчанию объекта Object .
Переопределение valueOf для специальных объектов. Вы можете создать функцию, вызываемую вместо метода по умолчанию valueOf. Ваша функция обязана не принимать никаких аргументов.
Предположим, у вас есть тип объектов myNumberType и Вы хотите создать метод valueOf для него. Следующий код присваивает определённую пользователем функцию методу valueOf объекта:
myNumberType.prototype.valueOf = new Function(functionText) После этого всегда при вызове объекта типа myNumberType, используемого в контексте, где необходимо представление в виде примитивного значения, JavaScript автоматически вызывает функцию, определённую в предыдущем коде.
Метод valueOf объекта обычно вызывается JavaScript, но вы и сами может вызвать его:
myNumber.valueOf() ПРИМЕЧАНИЕ: Объекты в строковом контексте конвертируются с помощью метода toString, который отличается от конвертирования String-объектов в строковые примитивы с использованием метода valueOf. Все строковые объекты имеют строковую конверсию, если только "[object type]". Но многие объекты не конвертируются в number, boolean или function.


Наблюдает за свойством по имени prop в данном объекте, вызывая handler(prop, oldval, newval), когда prop устанавливается и сохраняет return-значение в этом свойстве. Метод watchpoint может фильтровать (или обнулять) значение, возвращая модифицированное newval (или oldval).
Если Вы удалили свойство, для которого watchpoint был установлен, это watchpoint не исчезает. Если Вы позднее воссоздаёте свойство, watchpoint всё ещё продолжает действовать.
Чтобы удалить watchpoint, используйте метод unwatch. По умолчанию метод watch наследуется каждым объектом - потомком объекта Object.
Отладчик JavaScript имеет функциональность, похожую на функциональность, предоставляемую этим методом, а также другие опции отладки. Об отладчике см. Getting Started with Netscape JavaScript Debugger.


Обычно Вы работаете с объектами Option в контексте списка выбора/selection list (объект Select). Когда JavaScript создаёт Select- объект для каждого тэга SELECT в документе, он создаёт Option-объекты для тэгов OPTION внутри тэга SELECT и помещает эти объекты в массив options объекта Select.
Кроме того, Вы можете создавать новые опции, используя конструктор Option, и добавлять эти опции в список выбора. После создания опции и добавления её в Select-объект, Вы обязаны обновить документ, используя history.go(0). Этот оператор обязан быть последним. При перезагрузке документа переменные теряются, если они не сохранены в куках или значениях элементов формы.
Вы можете использовать свойства Option.selected и Select.selectedIndex для изменения статуса выбора опции.
  • Свойство Select.selectedIndex это целое число, специфицирующее индекс выбранной опции. Оно чаще всего используется в Select-объектах, которые созданы без атрибута MULTIPLE. Следующий оператор устанавливает свойство selectedIndex объекта Select:
  • document.myForm.musicTypes.selectedIndex = i
  • Свойство Option.selected это Булево значение, специфицирующее текущий статус выбора опции Select-объекта. Если опция выбрана, её свойство selected имеет значение true; иначе - false. Это чаще всего используется в Select-объектах, созданных с атрибутом MULTIPLE. Следующий оператор устанавливает свойство selected опции в true:
  • document.myForm.musicTypes.options[i].selected = true
Для изменения текста опции используйте свойство Option.text. Например, форма имеет следующий Select-объект:
<SELECT name="userChoice">
   <OPTION>Choice 1
   <OPTION>Choice 2
   <OPTION>Choice 3
</SELECT> Вы можете установить текст элемента iй на основе текста, введённого в текстовое поле whatsNew:
myform.userChoice.options[i].text = myform.whatsNew.value Вам не нужно перезагружать или обновлять документ после изменения текста опции.


Если опция выбрана по умолчанию, значение свойства defaultSelected равно true; иначе - false.
defaultSelected первоначально отражает использование атрибута SELECTED в тэге OPTION; однако установка defaultSelected переопределяет атрибут SELECTED.
Вы можете установить свойство defaultSelected в любое время. Отображение соответствующего Select-объекта не обновляется, когда Вы устанавливаете свойство defaultSelected опции, оно обновляется только при установке свойств Option.selected или Select.selectedIndex.
Объект Select, созданный без атрибута MULTIPLE, может иметь выбранной по умолчанию только одну опцию. Если Вы устанавливаете defaultSelected в таком объекте, любые предыдущие установки по умолчанию, включая установки атрибутом SELECTED, очищаются. Если Вы устанавливаете defaultSelected в Select-объекте, созданном с атрибутом MULTIPLE, предыдущие установки выбора не изменяются.

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