Ответ 1
Здесь нет магии, Constructor
(большой C), поскольку свойство не имеет особого значения. Это просто соглашение.
В основном они используют структуру класса, чтобы определить функциональность
var Alert = function() {};
Alert.prototype.foo = function() {};
и выставляя его через неклассируемый интерфейс.
$('#blurf').alert();
Итак, это просто полезное соглашение с плагином. Каждый плагин jQuery определяет сам первичный метод для объекта $.fn
, который имеет доступ к конструкторам, которые ему нужны через закрытие. Но сам конструктор является закрытым для этого закрытия. Назначить его $.fn.myplugin.Constructor
просто делает этот конструктор доступным для другого кода, что позволяет вам иметь расширенный контроль, если необходимо
var myAlert = new $.fn.alert.Constructor('Hello World'); // or something
Теперь вы могли бы что-то вроде этого:
$.fn.alert.Alert = Alert;
Это субъективно, уродливое и избыточное. И теперь вам придется перевести или угадать имя свойства, которое приведет к конструктору. Если вы скажете, что каждый плагин реализован с одним классом, и каждый конструктор классов можно найти в $.fn.myplugin.Constructor
, тогда у вас есть согласованный интерфейс для доступа к классам за каждым плагином.
Итак, это просто конвенция, ничего особенного в этом нет.