//Please explain the follwing set of line
var func = tool[ev.type]; // Set func to the tool object's member
// named 'event.type'
// Will set func to undefined if no function is
// found in the tool object
if (func) { // if a func was found then call it.
func(ev);
}
Обратите внимание, что хеш-объект tool
используется для хранения ссылок на функции, а не скаляров, таких как 1, «строка» и т. Д. Особенность Javascript заключается в том, что вы можете создавать, сохранять и передавать функции ввремя выполнения.
Добавлено Спасибо @Chris Morgan за указание на то, что an_obj ['unknown_key'] == не определено, а не равно нулю.
Также обратите внимание, что foo ['a_key'] - это способ сказать foo.a_key - член 'a_key' объекта 'foo'.
И, наконец, Javascript не делаетесть хэшиВ нем есть объекты, которые работают достаточно хорошо, как и тип Hash, встречающийся в других языках.
Добавлен еще (после просмотра всего кода, а не только рассматриваемой части).Код создает объект tool
.Он имеет несколько членов:
started
flag mousedown
, mouseup
и mousemove
функций
ФрагментКод пытается найти функцию, которая соответствует типу события.Таким образом, в этом случае объект tool
используется как объект, а не как хеш.Я обновил первую часть ответа соответствующим образом.