В дальнейшем как параметр передается только свойство элемента управления формы. В последнем примере функция checkSong() нуждается только в свойстве value этого поля, так что обработчик событий может передавать this.value как параметр. Поскольку this ссылается на тот самый объект, в котором появляется обработчик событий, синтаксис this.имяСвойства позволяет извлекать и передавать свойство:
<input type="text" name="song"
onChange="checkSong(this.value)"><p>
Преимущество этого способа передачи данных формы состоит в том, что функция не вы полняет так много работы, как в предыдущем случае:
function checkSong(songTitle) {
alert("Making sure that " + songTitle + " was recorded by
the Beatles .") }
В отличие от передачи ссылок на объекты (подобно форме и текстовому полю, как показано выше), когда вы передаете значение свойства (например this.value ), последнее
|
|
|
совет |
|
Много разработчиков с опытом написания программ на других языках ожидают, что параметры могут быть переданы либо по ссылке, либо по значению, но не обоими путями. Эмпирическое правило в JavaScript, однако, является довольно забавным исключением из написанных правил: ссылки на объекты передаются по ссылке, значения свойств — по значению. |
задается без ссылки на объект, который оно представляет. Это вполне приемлемо, когда функция нуждается в значении, чтобы выполнить свою работу. Однако, если часть этой работы состо ит в изменении свойства объекта (например, преобразовании текста к верхнему регистру и обратного отображения этого текста в поле), значение, переданное в функцию, не обеспе чивает "обратную связь" с породившим его объектом. Чтобы изменить свойство объекта, который вызывает функцию обработки событий, вам необходимо передать ссылку на опреде ленный объект, чтобы функция знала, где искать конечный объект.