I had an equivalent question my self and I stumble on this (jQuery Documentation):
Stateless vs. Stateful Plugins
Most jQuery plugins are stateless; they perform some action and their
job is done. For example, if you set the text of an element using
.text( "hello" )
, there is no setup phase and the result is always
the same. For these types of plugins, it makes sense to just extend
jQuery's prototype.
However, some plugins are stateful; they have full life cycles,
maintain state, and react to changes. These plugins require a lot of
code dedicated to initialization and state management (and sometimes
destruction). This results in a lot of boilerplate for building
stateful plugins. Even worse, each plugin author may manage life
cycles and state differently, resulting in different API styles for
different plugins. The widget factory aims to solve both problems,
removing the boilerplate and creating a consistent API across plugins.
Consistent API
The widget factory defines how to create and destroy widgets, get and
set options, invoke methods, and listen to events triggered by the
widget. By using the widget factory to build your stateful plugins,
you are automatically conforming to a defined standard, making it
easier for new users to start using your plugins. In addition to
defining the interface, the widget factory also implements much of
this functionality for you. (...)
Setting Options on Initialization
Whenever you build a plugin that accepts options, you should define
defaults for as many options as possible, then merge the user-provided
options with the defaults on initialization. (...) The widget factory
provides this functionality and even takes it a bit further.
I'm posting here for feature reference since this is where I'm first looking for an answer! :)