РЕДАКТИРОВАТЬ: на основе предоставленных ссылок.
Причина, по которой ваш secondAPI
метод не работает, заключается в том, что $.fn.myPlugin
является объектом Function, поэтому наследуется от этой цепочки прототипов. Чтобы создать экземпляр объекта, который наследуется от прототипа $.fn.myPlugin
, вам нужно использовать оператор new
, чтобы сначала создать новый объект $.fn.myPlugin
.
Похоже, что используемый вами метод основан на фабрике виджетов jQuery. Посмотрите на источник для виджета jQuery UI (в частности, метод $.widget
), а затем на источник чего-то, что использует фабрику виджетов jQuery UI.
Во-первых, виджет принимает в качестве второго аргумента конструктор объекта, который вы хотите расширить. Затем он создает объект этого типа с помощью оператора new
, а затем расширяет этот объект с помощью метода, который вы показали. После этого он создает логику вашего плагина, используя метод $.widget.bridge
, чтобы вы могли использовать плагин обычным способом, т.е. $(element).myPlugin();
. Затем вы можете вызывать любые функции, используя $(element).myPlugin("apiMethod");
Я предлагаю вам прочитать источник и документацию, чтобы понять, что происходит. Тогда для вас может быть хорошей идеей использовать Widget Factory для своих собственных плагинов. Это действительно хорошая работа, которая избавляет вас от необходимости кодировать часть расширения ваших собственных плагинов.