свойства функции-конструктора

#javascript

#javascript

Вопрос:

В этом плагине jQuery вызывается функция конструктора $.jPlayer (строка 64) Существуют также свойства и методы — $.jPlayer.htmlEvent и $.jPlayer.convertTime . Они не принадлежат прототипу функции конструктора. Какому объекту они принадлежат? Как они используются? Передаются ли они экземплярам $.jPlayer функции конструктора?

Комментарии:

1. В JavaScript функции являются объектами, поэтому они также могут иметь свойства. Например, некоторые свойства по умолчанию prototype , call и bind .

Ответ №1:

  1. Кому они принадлежат?

    Для «класса» jPlayer. Переменные класса — это способ хранения вещей, которые, по вашему мнению, не должны быть видны как свойства каждого экземпляра.

  2. Как они используются?

    Просто обратитесь к ним напрямую, как вы сами делаете в исходном вопросе. Например, в строке 996 есть этот фрагмент

     $.each($.jPlayer.htmlEvent, function(i, eventType) {
        mediaElement.addEventListener(this, function() {
            if(entity.gate) {
                self._trigger($.jPlayer.event[eventType]);
            }
        }, false);
    });
      

    where $.jplayer.htmlEvent используется как своего рода глобальная константа (но без загрязнения фактического глобального пространства имен, поскольку оно хранится как переменная класса).

  3. Передаются ли они экземплярам?

    Только если вы явно это сделаете (хотя, вероятно, это не будет сделано, если было решено сохранить их в качестве атрибутов класса вместо атрибутов прототипа в первую очередь)