You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/callback.html" target="_blank">Callback patterns</a> - when you pass function A to function B as a parameter, function A is a callback function</li>
47
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/configuration-objects.html" target="_blank">Configuration objects </a>- keep control of function arguments and makes it easily configurable</li>
48
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/returning-functions.html" target="_blank">Returning functions </a>- one function returns another function or create another function on-demand</li>
49
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/currying.html" target="_blank">Currying</a> - used to create new functions dynamically by partially applying a set of arguments</li>
50
-
</ul>
46
+
<section>
47
+
<h2>Function Patterns</h2>
48
+
<h3>API Patterns</h3>
49
+
<ul>
50
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/callback.html" target="_blank">Callback patterns</a> - when you pass function A to function B as a parameter, function A is a callback function</li>
51
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/configuration-objects.html" target="_blank">Configuration objects </a>- keep control of function arguments and makes it easily configurable</li>
52
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/returning-functions.html" target="_blank">Returning functions </a>- one function returns another function or create another function on-demand</li>
53
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/currying.html" target="_blank">Currying</a> - used to create new functions dynamically by partially applying a set of arguments</li>
54
+
</ul>
55
+
56
+
<h3>Initialization patterns</h3>
57
+
<ul>
58
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/immediate-functions.html" target="_blank">Immediate functions</a> - syntax that enables function execution as soon as it is defined</li>
59
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/immediate-object-initialization.html" target="_blank">Immediate object initialization</a> - this pattern is mainly suitable for one-off tasks</li>
60
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/init-time-branching.html" target="_blank">Init-time branching</a> - branch code once during initlization initialization</li>
61
+
</ul>
62
+
63
+
<h3>Performance patterns</h3>
64
+
<ul>
65
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/memoization.html">Memoization</a> - use function properties to avoid repeated computation</li>
66
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/self-defining-functions.html">Self-defining functions</a> - self-overwrite with new bodies to do less work from the second invocation and after</li>
67
+
</ul>
68
+
</section>
51
69
52
-
<h3>Initialization patterns</h3>
53
-
<ul>
54
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/immediate-functions.html" target="_blank">Immediate functions</a> - syntax that enables function execution as soon as it is defined</li>
55
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/immediate-object-initialization.html" target="_blank">Immediate object initialization</a> - this pattern is mainly suitable for one-off tasks</li>
56
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/init-time-branching.html" target="_blank">Init-time branching</a> - branch code once during initlization initialization</li>
57
-
</ul>
70
+
<section>
71
+
<h2>jQuery Patterns</h2>
72
+
<ul>
73
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/requery.html" target="_blank">requery</a> - avoid requery by using jQuery chaining</li>
74
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/append.html" target="_blank">append</a> - use string concatenate and set innerHTML</li>
75
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/data.html" target="_blank">data</a> - pattern and antipattern of using data</li>
76
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/context-and-find.html" target="_blank">context and find</a> - use find over context</li>
77
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/detach.html" target="_blank">detach</a> - take element off the DOM while manipulating them</li>
78
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/event-delegation.html" target="_blank">event delegation</a> - event delegation pattern and antipattern</li>
79
+
</ul>
80
+
<h3>Selector</h3>
81
+
<ul>
82
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/left-and-right.html" target="_blank">left and right</a> - specific on the right, light on the left</li>
83
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/decending-from-id.html" target="_blank">decending from id</a> - be more specific</li>
84
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/universal-selector.html" target="_blank">universal selector</a> - use of universal selector</li>
85
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/specific-when-needed.html" target="_blank">be specific when needed</a> - be specific only when needed</li>
86
+
</ul>
87
+
</section>
58
88
59
-
<h3>Performance patterns</h3>
60
-
<ul>
61
-
<li><ahref="#">Memoization</a> - use function properties to avoid repeated computation</li>
62
-
<li><ahref="#">Self-defining functions</a> - self-overwrite with new bodies to do less work from the second invocation and after</li>
63
-
</ul>
89
+
<section>
90
+
<h2>Design Patterns</h2>
91
+
<h3>Creational</h3>
92
+
<ul>
93
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/builder.html" target="_blank">Builder</a> - constructs complex objects by separating construction and representation</li>
94
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/factory.html" target="_blank">Factory method</a> - creates objects without specifying the exact class to create</li>
95
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/singleton.html" target="_blank">Singleton</a> - restricts object creation for a class to only one instance</li>
96
+
</ul>
97
+
<h3>Structural</h3>
98
+
<ul>
99
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/decorator.html" target="_blank">Decorator</a> - dynamically adds/overrides behaviour in an existing method of an object</li>
100
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/facade.html" target="_blank">Facade</a> - provides a simplified interface to a large body of code</li>
101
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/proxy.html" target="_blank">Proxy</a> - provides a placeholder for another object to control access, reduce cost, and reduce complexity</li>
102
+
</ul>
103
+
<h3>Behavioral</h3>
104
+
<ul>
105
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/chain-of-responsibility.html" target="_blank">Chain of responsibility</a> - delegates commands to a chain of processing objects</li>
106
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/command.html" target="_blank">Command</a> - creates objects which encapsulate actions and parameters</li>
107
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/iterator.html" target="_blank">Iterator</a> - implements a specialized language</li>
108
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/mediator.html" target="_blank">Mediator</a> - allows loose coupling between classes by being the only class that has detailed knowledge of their methods</li>
109
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/observer.html" target="_blank">Observer</a> - is a publish/subscribe pattern which allows a number of observer objects to see an event</li>
110
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/strategy.html" target="_blank">Strategy</a> - allows one of a family of algorithms to be selected on-the-fly at runtime</li>
111
+
</ul>
112
+
</section>
64
113
65
-
<h2>jQuery Patterns</h2>
66
-
<ul>
67
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/requery.html" target="_blank">requery</a> - avoid requery by using jQuery chaining</li>
68
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/append.html" target="_blank">append</a> - use string concatenate and set innerHTML</li>
69
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/data.html" target="_blank">data</a> - pattern and antipattern of using data</li>
70
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/context-and-find.html" target="_blank">context and find</a> - use find over context</li>
71
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/detach.html" target="_blank">detach</a> - take element off the DOM while manipulating them</li>
72
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/event-delegation.html" target="_blank">event delegation</a> - event delegation pattern and antipattern</li>
73
-
</ul>
74
-
<h3>Selector</h3>
75
-
<ul>
76
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/left-and-right.html" target="_blank">left and right</a> - specific on the right, light on the left</li>
77
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/decending-from-id.html" target="_blank">decending from id</a> - be more specific</li>
78
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/universal-selector.html" target="_blank">universal selector</a> - use of universal selector</li>
79
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/jquery-patterns/specific-when-needed.html" target="_blank">be specific when needed</a> - be specific only when needed</li>
80
-
</ul>
81
-
<h2>Design Patterns</h2>
82
-
<h3>Creational</h3>
83
-
<ul>
84
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/builder.html" target="_blank">Builder</a> - constructs complex objects by separating construction and representation</li>
85
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/factory.html" target="_blank">Factory method</a> - creates objects without specifying the exact class to create</li>
86
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/singleton.html" target="_blank">Singleton</a> - restricts object creation for a class to only one instance</li>
87
-
</ul>
88
-
<h3>Structural</h3>
89
-
<ul>
90
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/decorator.html" target="_blank">Decorator</a> - dynamically adds/overrides behaviour in an existing method of an object</li>
91
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/facade.html" target="_blank">Facade</a> - provides a simplified interface to a large body of code</li>
92
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/proxy.html" target="_blank">Proxy</a> - provides a placeholder for another object to control access, reduce cost, and reduce complexity</li>
93
-
</ul>
94
-
<h3>Behavioral</h3>
95
-
<ul>
96
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/chain-of-responsibility.html" target="_blank">Chain of responsibility</a> - delegates commands to a chain of processing objects</li>
97
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/command.html" target="_blank">Command</a> - creates objects which encapsulate actions and parameters</li>
98
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/iterator.html" target="_blank">Iterator</a> - implements a specialized language</li>
99
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/mediator.html" target="_blank">Mediator</a> - allows loose coupling between classes by being the only class that has detailed knowledge of their methods</li>
100
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/observer.html" target="_blank">Observer</a> - is a publish/subscribe pattern which allows a number of observer objects to see an event</li>
101
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/design-patterns/strategy.html" target="_blank">Strategy</a> - allows one of a family of algorithms to be selected on-the-fly at runtime</li>
102
-
</ul>
103
-
104
-
<h2>General Patterns</h2>
105
-
<ul>
106
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/single-var-pattern.html" target="_blank">single var pattern</a> - use one var statement and declare multiple variables</li>
107
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/globals.html" target="_blank">globals</a> - problem with globals</li>
108
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/conditionals.html" target="_blank">conditionals</a> - pattern and antipattern of using if else</li>
109
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/hoisting.html" target="_blank">hoisting</a> - var statements anywhere in a function act as if the variables were declared at the top of the function</li>
110
-
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/for-loops.html" target="_blank">for loops</a> - optimized for loops</li>
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/single-var-pattern.html" target="_blank">single var pattern</a> - use one var statement and declare multiple variables</li>
118
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/globals.html" target="_blank">globals</a> - problem with globals</li>
119
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/conditionals.html" target="_blank">conditionals</a> - pattern and antipattern of using if else</li>
120
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/hoisting.html" target="_blank">hoisting</a> - var statements anywhere in a function act as if the variables were declared at the top of the function</li>
121
+
<li><ahref="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/for-loops.html" target="_blank">for loops</a> - optimized for loops</li>
0 commit comments