Добрый день. Копаюсь в исходниках Leaflet и нашел там немного магии, которую никак не могу понять =) А именно Class.js. В методе extend: var F = function () {}; F.prototype = this.prototype; var proto = new F(); proto.constructor = NewClass; NewClass.prototype = proto; Что здесь происходит и для чего эта магия с прототипами? Для чего тут переменная F? И что такое и какую функцию выполняют InitHooks? (это уже дальше по коду)