In this presentation I share some tips about how to improve the quality and readability of JavaScript code, more specifically:
- Object Oriented JavaScript (comparing JS with Java)
- Bad practices
- Good practices
- Guidelines
- Recommended books
Introduction to JavaScript course. The course was updated in 2014-15.
Will allow you to understand what is JavaScript, what's it history and how you can use it.
The set of slides "Introduction to jQuery" is a follow up - which would allow the reader to have a basic understanding across JavaScript and jQuery.
Over 200 Pages of resources and code snippets to learn JavaScript and JavaScript DOM manipulation. JavaScript is the most popular web programming language and this eBook will help you learn more about JavaScript Coding
Introduction to JavaScript course. The course was updated in 2014-15.
Will allow you to understand what is JavaScript, what's it history and how you can use it.
The set of slides "Introduction to jQuery" is a follow up - which would allow the reader to have a basic understanding across JavaScript and jQuery.
Over 200 Pages of resources and code snippets to learn JavaScript and JavaScript DOM manipulation. JavaScript is the most popular web programming language and this eBook will help you learn more about JavaScript Coding
Annotations are more than phpdoc comments, they're a fully-featured way of including additional information alongside your code. We might have rejected an RFC to add support into the PHP core, but the community has embraced this tool anyway! This session shows you who is doing what with annotations, and will give you some ideas on how to use the existing tools in your own projects to keep life simple. Developers, architects and anyone responsible for the technical direction of an application should attend this session.
What is JavaScript?
JavaScript is a very powerful client-side scripting language. JavaScript is used mainly for enhancing the interaction of a user with the webpage. In other words, you can make your webpage more lively and interactive, with the help of JavaScript. JavaScript is also being used widely in game development and Mobile application development.
Introduction to Java programming - Java tutorial for beginners to teach Java ...Duckademy IT courses
Check out the course: https://www.duckademy.com/course/java-programming Learn Java from scratch in an easy and entertaining way. The Easy-to-follow Java programming course on Duckademy was made for beginners. In this course we start at the very basics (from zero) and go through lots of interesting exercises and analogies that will take you to an advanced level. By the end of the course you will have all the knowledge needed to move on and specialize in Java. The course is easy to follow and things are well explained. Furthermore, to make your learning easier and more enjoyable throughout the course we will develop a nostalgic, text-based fantasy game.
The course is recommended to anyone who wants to learn Java. Ideal for those who are new to programming, but it can be useful and enjoyable for people who want to switch to Java from a different programming language.
By the end of the course you will be able to build simple, but fully functional programs. You will also gain all the knowledge needed to specialize in Java and become a well-payed Java expert later on.
Check out the course: https://www.duckademy.com/course/java-programming
The debug process constitutes an important part in an app's development cycle. Knowing the (right) tools and techniques means you can optimizes time and therefore costs. In this session we will see a number of techniques to optimize debugging of iOS applications exploiting the power of Xcode, LLDB and other support tools.
Annotations are more than phpdoc comments, they're a fully-featured way of including additional information alongside your code. We might have rejected an RFC to add support into the PHP core, but the community has embraced this tool anyway! This session shows you who is doing what with annotations, and will give you some ideas on how to use the existing tools in your own projects to keep life simple. Developers, architects and anyone responsible for the technical direction of an application should attend this session.
What is JavaScript?
JavaScript is a very powerful client-side scripting language. JavaScript is used mainly for enhancing the interaction of a user with the webpage. In other words, you can make your webpage more lively and interactive, with the help of JavaScript. JavaScript is also being used widely in game development and Mobile application development.
Introduction to Java programming - Java tutorial for beginners to teach Java ...Duckademy IT courses
Check out the course: https://www.duckademy.com/course/java-programming Learn Java from scratch in an easy and entertaining way. The Easy-to-follow Java programming course on Duckademy was made for beginners. In this course we start at the very basics (from zero) and go through lots of interesting exercises and analogies that will take you to an advanced level. By the end of the course you will have all the knowledge needed to move on and specialize in Java. The course is easy to follow and things are well explained. Furthermore, to make your learning easier and more enjoyable throughout the course we will develop a nostalgic, text-based fantasy game.
The course is recommended to anyone who wants to learn Java. Ideal for those who are new to programming, but it can be useful and enjoyable for people who want to switch to Java from a different programming language.
By the end of the course you will be able to build simple, but fully functional programs. You will also gain all the knowledge needed to specialize in Java and become a well-payed Java expert later on.
Check out the course: https://www.duckademy.com/course/java-programming
The debug process constitutes an important part in an app's development cycle. Knowing the (right) tools and techniques means you can optimizes time and therefore costs. In this session we will see a number of techniques to optimize debugging of iOS applications exploiting the power of Xcode, LLDB and other support tools.
Tomasz Łopusiewicz - Testowanie i Symfony2
Prezentacja z Uszanowanka Programowanka #9 - uszanowanko.pl
W trakcie prezentacji przyjrzymy się kilku narzędziom oraz różnym podejściom w testowaniu aplikacji webowych opartych o Symfony2. Przeanalizujemy także kiedy warto warto skupić się na testowalności kodu pomijając przy tym wygodę i funkcje frameworka.
Modular Test-driven SPAs with Spring and AngularJSGunnar Hillert
Single-page Applications (SPA) are all the rage these days and with them there is an avalanche of new tools, libraries and frameworks we need to know. But what does this mean for us as Spring developers? In this session we will give you an overview of the current landscape and illustrate the choices the Spring XD team has made for its user interface. What do I use to write SPA applications? How do I integrate them into existing Spring-based backends? How do I build them? Can I integrate them into my existing Gradle or Maven build processes in order to achieve complete build automation? How do I integrate realtime messaging using Spring's SockJS/WebSocket support? In this talk we will answer these and many more questions. We will cover frameworks such as AngularJS, Bootstrap, RequireJS; tools like Bower, Grunt, Gulp; and also talk about testing using Karma and Protractor.
Similar to Building maintainable javascript applications (20)
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
AI Genie Review: World’s First Open AI WordPress Website CreatorGoogle
AI Genie Review: World’s First Open AI WordPress Website Creator
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-genie-review
AI Genie Review: Key Features
✅Creates Limitless Real-Time Unique Content, auto-publishing Posts, Pages & Images directly from Chat GPT & Open AI on WordPress in any Niche
✅First & Only Google Bard Approved Software That Publishes 100% Original, SEO Friendly Content using Open AI
✅Publish Automated Posts and Pages using AI Genie directly on Your website
✅50 DFY Websites Included Without Adding Any Images, Content Or Doing Anything Yourself
✅Integrated Chat GPT Bot gives Instant Answers on Your Website to Visitors
✅Just Enter the title, and your Content for Pages and Posts will be ready on your website
✅Automatically insert visually appealing images into posts based on keywords and titles.
✅Choose the temperature of the content and control its randomness.
✅Control the length of the content to be generated.
✅Never Worry About Paying Huge Money Monthly To Top Content Creation Platforms
✅100% Easy-to-Use, Newbie-Friendly Technology
✅30-Days Money-Back Guarantee
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIGenieApp #AIGenieBonus #AIGenieBonuses #AIGenieDemo #AIGenieDownload #AIGenieLegit #AIGenieLiveDemo #AIGenieOTO #AIGeniePreview #AIGenieReview #AIGenieReviewandBonus #AIGenieScamorLegit #AIGenieSoftware #AIGenieUpgrades #AIGenieUpsells #HowDoesAlGenie #HowtoBuyAIGenie #HowtoMakeMoneywithAIGenie #MakeMoneyOnline #MakeMoneywithAIGenie
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
3. BECAUSE JAVASCRIPT WILL BECOME THE
DOMINANT PROGRAMMING LANGUAGE OF THE
FUTURE…
• JavaScript is de facto language in Web Browsers, where Java Applets,
VBScript and Adobe Flash become obsolete.
• JavaScript is becoming a popular Server Programming Language after
the success of Node.js.
• JavaScript will become de facto language to write multi-platform apps
running on mobile devices, and mobile devices will rule the world!
• JavaScript is being used to write smart TV apps.
• JavaScript is now adopted by GNOME and Windows 8 to write desktop
applications.
4. …AND THE FUTURE IS CLOSER THAN YOU
THINK!
What do you think were the most popular programming languages in GitHub on 2013?
6. IT IS BECAUSE JAVASCRIPT IS A
MISUNDERSTOOD PROGRAMMING
LANGUAGE…
Some people think JavaScript is such a bad programming language because it doesn´t allow
Object Oriented Programming features like:
• Classes
• Inheritance
• Packages/Namespaces
• Enumerations
• Access Modifiers
• Polymorphism
• Exceptions
7. ... AND AS A RESULT, PEOPLE END UP
WRITING SPAGHETTI CODE
8.
9. JAVASCRIPT ALLOWS CLASSES
Java class
JavaScript class
public class Person {
private String _name;
public Person(String name) {
_name = name;
}
public String getName() {
return _name;
};
@Override
public String toString() {
return "name: " + _name;
};
}
function Person(name) {
var _name = name;
this.getName = function () {
return _name;
};
this.toString = function () {
return "name: " + _name;
};
}
12. JAVASCRIPT ALLOWS INHERITANCE
Java: instance of an
inherited class
JavaScript: instance of an
inherited class
For both objects, it is invoked toString() method defined in “Person” parent class, having the sam
18. … AND THIS IS HOW WE IMPLEMENT POLYMORPHISM IN
JAVASCRIPT
19. JSDOC
JSDoc is a markup language used to annotate JavaScript source
code files, similar to Javadoc.
All files, classes, methods and properties should be documented
with JSDoc with the appropriate tags and types.
For more reference see: {@link http://usejsdoc.org}
20. JSDOC - TAGS
@access Specifies the access level of a member: private, protected, public.
@author Identifies the author of an item.
@callback Documents a callback function.
@class Marks a function as a class.
@constant {type} Marks an object as a constant.
@copyright Documents some copyright information.
@default Documents a default value.
@enum {type} Marks an object as an enumeration.
@extends Indicates that a class inherits from another class.
@file Provides a description for a file.
@ignore Removes a JSDoc item from the final output.
@link Links to a JSDoc namepath or an external URL.
@module Documents a JavaScript module.
@namespace Marks an object as a namespace.
@param {type} Documents a parameter of a function.
@requires Describes a required module.
@return {type} Documents the return value of a function.
@type {type} Documents the type of an object.
@version Documents the version number of an item.
22. JSDOC - EXAMPLE
/**
* @file Here goes file description. Filenames should be all lowercase in
* order to avoid confusion on case-sensitive platforms.
*
* @version 1.0
* @author Juan Cuartas <me@juancuartas.com>
* @copyright Juan Cuartas, 2013
*
* @requires some/module
*/
24. BAD PRACTICES – GLOBAL VARIABLES
Bad practice:
“items” is attached to the
Window object. Any other
function can easily
override that variable.
Good practice:
“items” is attached to a custom
namespace.
<script>
var items = [];
function addToCart(item) {
items.push(item);
}
</script>
<script>
var shoppingCart = shoppingCart || {};
shoppingCart.items = [];
function addToCart(item) {
shoppingCart.items.push(item);
}
</script>
25. BAD PRACTICES – MISSING SEMICOLONS
Not using semicolons
is a sin!
var qty = 3
var price = 17
var total = qty * price
Father, I
don´t use
semicolons!
26. BAD PRACTICES – NO STRICT COMPARISION
Bad practice:
This comparition performs
coercion, so "1" == 1 is
true!
Good practice
<script>
if (numericVar == 1) {
// Statements...
}
if (numericVar != 1) {
// Statements...
}
</script>
<script>
if (numericVar === 1) {
// Statements...
}
if (numericVar !== 1) {
// Statements...
}
</script>
27. BAD PRACTICES – CURLY BRACES IN NEW
LINE
function getTotal()
{
var qty = 10;
var price = 150;
var total = qty * price;
return
{
qty: qty,
price: price,
total: total
}
}
function getTotal() {
var qty = 10;
var price = 150;
var total = qty * price;
return {
qty: qty,
price: price,
total: total
}
}
function getTotal()
{
var qty = 10;
var price = 150;
var total = qty * price;
return;
{
qty: qty,
price: price,
total: total
}
}
WRONG!
Because the JavaScript interpreter performs
semicolon insertion, it thinks is missing a
semicolon after the return statement, and the
function doesn´t return anything at all.
Right style!
28. BAD PRACTICES – LOOPING OVER ARRAYS
Bad
practice
var fruits = ["banana", "apple", "lemon", "grape"];
for (var i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
var fruits = ["banana", "apple", "lemon", "grape"];
fruits.forEach(function (fruit) {
console.log(fruit);
});
Good practice:
More understandable
code
Use JS capabilities
Less code
29. BAD PRACTICES – INLINE EVENT HANDLERS
Bad practice:
Attaching logic from
the UI.
Good practice:
Separate logic in a controller
file.
<button id="btnSomething" onclick="doSomething();">
Click here...
</button>
$("#btnSomething").click(doSomething);
31. GUIDELINES - USE STRICT
<script>
"use strict";
hello = "Hello World!";
alert(hello);
</script>
<script>
hello = "Hello World!";
alert(hello);
</script>
Always use "use strict" at the top of JS files. That allows to place
a program, or a function, in a strict operating context,
preventing certain actions from being taken and throws more
exceptions with more information.
32. GUIDELINES - VARIABLES
/**
* Use lowerCamelCase for variable names.
*
* When you fail to specify var, the variable gets placed in the global context,
* potentially clobbering existing values. Also, if there's no declaration,
* it's hard to tell in what scope a variable lives (e.g., it could be in the
* Document or Window just as easily as in the local scope). So always declare
* with var.
*
* @type {string}
*/
var someVariable = "Some value";
33. GUIDELINES - CONSTANTS
/**
* Use UPPER_CASE for constant names. Words should be separated through
* underscore character. Always add the @const annotation.
*
* @const
* @type {number}
*/
var SOME_CONSTANT = 0;
34. GUIDELINES - NAMESPACES
/**
* Always prefix identifiers in the global scope with a unique pseudo namespace
* related to the project or library. Use lowerCamelCase for namespaces. Always
* add the @namespace annotation.
*
* @namespace
*/
var namespace = namespace || {};
35. GUIDELINES - FUNCTIONS
/**
* Use lowerCamelCase for function names.
*
* @param {number} arg - This is a description for "arg".
* @return {number} If the function returns something, it must be specified.
*/
namespace.someFunction = function ( arg ) {
return arg + 1;
};
36. GUIDELINES - ENUMERATIONS
/**
* Use UperCamelCase for enum names, and UPPER_CASE for item names.
* Always add the @enum annotation following enum type.
*
* @enum {string}
*/
var MyEnumeration = {
ITEM_A: "A",
ITEM_B: "B",
ITEM_C: "C"
};
37. GUIDELINES - CLASSES
/**
* Use UperCamelCase for class names. Always add the @class annotation.
* @class
*/
function MyClass() {
/**
* Private attributes and methods should be named with a trailing underscore.
* @type {number}
*/
var _attribute = 1;
/**
* Returns a string that represents the current object.
* @return {string} A string that represents the current object.
*/
var _toString = function () {
return _attribute.toString();
};
return {
attribute: _attribute,
toString: _toString
};
}
38. GUIDELINES – BOOLEAN EXPRESSIONS
/**
* The following are all false in boolean expressions:
*
* - null
* - undefined
* - "" the empty string
* - 0 the number
*/
/* USE */ if (x) /* INSTEAD OF */ if (x != null)
/* USE */ if (x) /* INSTEAD OF */ if (x != null && x != "")
/* USE */ if (array.length) /* INSTEAD OF */ if (array.length > 0)
40. JAVASCRIPT: THE GOOD PARTS
• Is the Holy Book for JavaScript Programmers
• Writen by Douglas Crockford in 2008
• Best known for popularize JSON Notation
• Creator of JSLint and JSON2.js
For more reference see:
{@link http://crockford.com}
41. LEARNING JAVASCRIPT DESIGN PATTERNS
• Written by Addy Osmani in 2012
• This book is targeted at professional developers wishing to
improve their knowledge of design patterns and how they can
be applied to the JavaScript programming language.
For more reference see:
{@link
http://addyosmani.com/resources/essentialjsdesignpatterns/bo
ok}