Подтвердить что ты не робот

Какова цель $.fn.foo.Constructor = Foo в Twitter Bootstrap JS

Все плагины jQuery для Twitter Bootstrap следуют одному и тому же базовому шаблону определения класса, который контролирует поведение плагина. Ближе к концу они делают это:

$.fn.alert.Constructor = Alert

Что это делает?

Я предполагаю, что это определение конструктора прототипа, но они используют прописную букву C. Не имеет значения здесь случая? Помимо этого, я не совсем понимаю, что это делает и как он привыкает к плагину.

В качестве примера можно привести плагин Alert: https://github.com/twitter/bootstrap/blob/master/js/bootstrap-alert.js

4b9b3361

Ответ 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, тогда у вас есть согласованный интерфейс для доступа к классам за каждым плагином.

Итак, это просто конвенция, ничего особенного в этом нет.