#javascript
#javascript
Вопрос:
В этом плагине jQuery вызывается функция конструктора $.jPlayer
(строка 64) Существуют также свойства и методы — $.jPlayer.htmlEvent
и $.jPlayer.convertTime
. Они не принадлежат прототипу функции конструктора. Какому объекту они принадлежат? Как они используются? Передаются ли они экземплярам $.jPlayer
функции конструктора?
Комментарии:
1. В JavaScript функции являются объектами, поэтому они также могут иметь свойства. Например, некоторые свойства по умолчанию
prototype
,call
иbind
.
Ответ №1:
-
Кому они принадлежат?
Для «класса» jPlayer. Переменные класса — это способ хранения вещей, которые, по вашему мнению, не должны быть видны как свойства каждого экземпляра.
-
Как они используются?
Просто обратитесь к ним напрямую, как вы сами делаете в исходном вопросе. Например, в строке 996 есть этот фрагмент
$.each($.jPlayer.htmlEvent, function(i, eventType) { mediaElement.addEventListener(this, function() { if(entity.gate) { self._trigger($.jPlayer.event[eventType]); } }, false); });
where
$.jplayer.htmlEvent
используется как своего рода глобальная константа (но без загрязнения фактического глобального пространства имен, поскольку оно хранится как переменная класса). -
Передаются ли они экземплярам?
Только если вы явно это сделаете (хотя, вероятно, это не будет сделано, если было решено сохранить их в качестве атрибутов класса вместо атрибутов прототипа в первую очередь)