Javascript: the First 20 Years

Total Page:16

File Type:pdf, Size:1020Kb

Javascript: the First 20 Years JavaScript: The First 20 Years ALLEN WIRFS-BROCK, Wirfs-Brock Associates, Inc., USA BRENDAN EICH, Brave Software, Inc., USA Shepherds: Sukyoung Ryu, KAIST, South Korea Richard P. Gabriel: poet, writer, computer scientist How a sidekick scripting language for Java, created at Netscape in a ten-day hack, ships first as a de facto Web standard and eventually becomes the world’s most widely used programming language. This paper tells the story of the creation, design, evolution, and standardization of the JavaScript language over the period of 1995–2015. But the story is not only about the technical details of the language. It is also the story of how people and organizations competed and collaborated to shape the JavaScript language which dominates the Web of 2020. CCS Concepts: • General and reference ! Computing standards, RFCs and guidelines; • Information systems ! World Wide Web; • Social and professional topics ! History of computing; History of programming languages; • Software and its engineering ! General programming languages; Scripting languages. Additional Key Words and Phrases: JavaScript, ECMAScript, Standards, Web browsers, Browser game theory, History of programming languages ACM Reference Format: Allen Wirfs-Brock and Brendan Eich. 2020. JavaScript: The First 20 Years. Proc. ACM Program. Lang. 4, HOPL (June 2020), 190 pages. https://doi.org/10.1145/3386327 1 INTRODUCTION In 2020, the World Wide Web is ubiquitous with over a billion websites accessible from billions of Web-connected devices. Each of those devices runs a Web browser or similar program which is able to process and display pages from those sites. The majority of those pages embed or load source code written in the JavaScript programming language. In 2020, JavaScript is arguably the world’s most broadly deployed programming language. According to a Stack Overflow [2018] survey it is used by 71.5% of professional developers making it the world’s most widely used programming language. This paper primarily tells the story of the creation, design, and evolution of the JavaScript language over the period of 1995–2015. But the story is not only about the technical details of the language. It is also the story of how people and organizations competed and collaborated to shape the JavaScript language which dominates the Web of 2020. This is a long and complicated story. To make it more approachable, this paper is divided into four major parts—each of which covers a major phase of JavaScript’s development and evolution. Between each of the parts there is a short interlude that provides context on how software developers were reacting to and using JavaScript. Authors’ addresses: Allen Wirfs-Brock, [email protected], Wirfs-Brock Associates, Inc., Sherwood, Oregon, USA; Brendan Eich, [email protected], Brave Software, Inc., San Francisco, California, USA. © 2020 Copyright held by the owner/author(s). This work is licensed under a Creative Commons Attribution 4.0 International License. This is the authors’ 2020-03-13 preprint version of this work. The definitive Version of Record will be published in Proceedings of the ACM on Programming Languages, https://doi.org/10.1145/3386327. Authors’ Preprint 2020-03-13, HOPL-4, Publication date: June 2020. 2 Allen Wirfs-Brock and Brendan Eich In 1995, the Web and Web browsers were new technologies bursting onto the world, and Netscape Communications Corporation was leading Web browser development. JavaScript was initially designed and implemented in May 1995 at Netscape by Brendan Eich, one of the authors of this paper. It was intended to be a simple, easy to use, dynamic languageg that enabled snippets of code to be included in the definitions of Web pages. The code snippets were interpreted by abrowseras it rendered the page, enabling the page to dynamically customize its presentation and respond to user interactions. Part 1, The Origins of JavaScript, is about the creation and early evolution of JavaScript. It examines the motivations and trade-offs that went into the development of the first versionof the JavaScript language at Netscape. Because of its name, JavaScript is often confused with the Javag programming language. Part 1 explains the process of naming the language, the envisioned relationship between the two languages, and what happened instead. It includes an overview of the original features of the language and the design decisions that motivated them. Part 1 also traces the early evolution of the language through its first few years at Netscape and other companies. A cornerstone of the Web is that it is based upon non-proprietary open technologies.1 Anybody should be able to create a Web page that can be hosted by a variety of Web servers from different vendors and accessed by a variety of browsers. A common specification facilitates interoperability among independent implementations. From its earliest days it was understood that JavaScript would need some form of standard specification. Within its first year Web developers were encoun- tering interoperability issues between Netscape’s JavaScript and Microsoft’s reverse-engineered implementation. In 1996, the standardization process for JavaScript was begun under the auspices of the Ecma International standards organization. The first official standard specification forthe language was issued in 1997 under the name “ECMAScript.” Two additional revised and enhanced editions, largely based upon Netscape’s evolution of the language, were issued by the end of 1999. Part 2, Creating a Standard, examines how the JavaScript standardization effort was initiated, how the specifications were created, who contributed to the effort, and how decisions weremade. By the year 2000, JavaScript was widely used on the Web but Netscape was in rapid decline and Eich had moved on to other projects. Who would lead the evolution of JavaScript into the future? In the absence of either a corporate or individual “Benevolent Dictator for Life,”2 the responsibility for evolving JavaScript fell upon the ECMAScript standards committee. This transfer of design respon- sibility did not go smoothly. There was a decade-long period of false starts, standardization hiatuses, and misdirected efforts as the ECMAScript committee tried to find its own path forward evolving the language. All the while, actual usage of JavaScript rapidly grew, often using implementation- specific extensions. This created a huge legacy of unmaintained JavaScript-dependent Webpages and revealed new interoperability issues. Web developers began to create complex client-side JavaScript Web applications and were asking for standardized language enhancements to support them. Part 3, Failed Reformations, examines the unsuccessful attempts to revise the language, the resulting turmoil within the standards committee, and how that turmoil was ultimately resolved. In 2008 the standards committee restored harmonious operations and was able to create a modestly enhanced edition of the standard that was published in 2009. With that success, the standards committee was finally ready to successfully undertake the task of compatibly modernizing the language. Over the course of seven years the committee developed major enhancements to 1The specifications of Web technologies are not developed and controlled by a single company and anycompanyor organization may create and distribute implementations of the technologies that interoperate with other implementations. 2A technology evolution approach where a single person or organization is recognized as the permanent sole authority able to make decisions to modify or extend a technology. Some projects (particularly open source ones) grant this authority to the individual who started the project or first developed the technology. [Meyer 2014] Authors’ Preprint 2020-03-13, HOPL-4, Publication date: June 2020. JavaScript: The First 20 Years 3 the language and its specification. The result, known as ECMAScript 2015, is the foundation for the ongoing evolution of JavaScript. After completion of the 2015 release, the committee again modified its processes to enable faster incremental releases and now regularly completes revisions on a yearly schedule. Part 4, Modernizing JavaScript, is the story of the people and processes that were used to create both the 2009 and 2015 editions of the ECMAScript standard. It covers the goals for each edition and how they addressed evolving needs of the JavaScript development community. This part examines the significant foundational changes made to the language in each edition and important new features that were added to the language. Wherever possible, the source materials for this paper are contemporaneous primary documents. Fortunately, these exist in abundance. The authors have ensured that nearly all of the primary documents are freely and easily accessible on the Web from reliable archives using URLs included in the references. The primary document sources were supplemented with interviews and personal communications with some of the people who were directly involved in the story. Both authors were significant participants in many events covered by this paper. Their recollections aretreated similarly to those of the third-party informants. The complete twenty-year story of JavaScript is long and so is this paper. It involves hundreds of distinct events and dozens of individuals and organizations. Appendices A through E are provided to help the reader navigate these details. AppendicesA andB provide annotated lists of the people and organizations
Recommended publications
  • T-Coffee Documentation Release Version 13.45.47.Aba98c5
    T-Coffee Documentation Release Version_13.45.47.aba98c5 Cedric Notredame Aug 31, 2021 Contents 1 T-Coffee Installation 3 1.1 Installation................................................3 1.1.1 Unix/Linux Binaries......................................4 1.1.2 MacOS Binaries - Updated...................................4 1.1.3 Installation From Source/Binaries downloader (Mac OSX/Linux)...............4 1.2 Template based modes: PSI/TM-Coffee and Expresso.........................5 1.2.1 Why do I need BLAST with T-Coffee?.............................6 1.2.2 Using a BLAST local version on Unix.............................6 1.2.3 Using the EBI BLAST client..................................6 1.2.4 Using the NCBI BLAST client.................................7 1.2.5 Using another client.......................................7 1.3 Troubleshooting.............................................7 1.3.1 Third party packages......................................7 1.3.2 M-Coffee parameters......................................9 1.3.3 Structural modes (using PDB)................................. 10 1.3.4 R-Coffee associated packages................................. 10 2 Quick Start Regressive Algorithm 11 2.1 Introduction............................................... 11 2.2 Installation from source......................................... 12 2.3 Examples................................................. 12 2.3.1 Fast and accurate........................................ 12 2.3.2 Slower and more accurate.................................... 12 2.3.3 Very Fast...........................................
    [Show full text]
  • Oral History of Winifred Mitchell Baker
    ........ Computer • History Museum Oral History of Winifred Mitchell Baker Interviewed by: Marc Weber Recorded: December 10, 2014 Mountain View, California CHM Reference number: X7311.2015 © 2015 Computer History Museum Oral History of Winifred Mitchell Baker Marc Weber: I'm Marc Weber of the Computer History Museum. And I'm here with Mitchell Baker, Chairwoman of Mozilla. Thank you so much for doing this interview. Winifred Mitchell Baker: Thanks, Marc. I'm happy to be here. The museum has been a bright spot for a long time, so I'm honored as well. Weber: Thank you. As am I. So start with a bit of your background. What is your full name? And when and where were you born? Baker: My full name is Winifred Mitchell Baker. My mom was a little eccentric though, and she never wanted me to use Winifred. So it's my first name. But in her mind, I was always Mitchell. So that's what I go by. And I was born in Berkeley in California in 1959. Weber: And tell me a little bit about your family and where you grew up. Baker: I grew up in Oakland, so the East Bay across from San Francisco. It borders Berkeley. My parents were born and raised on the East Coast and moved west, as people did in the '50s, where it seemed [like] starting a new life. They were each eccentric. And each had their own view of their world and really clear opinions. And I think some of that has rubbed off actually. Weber: So eccentric in what way? What did they do? Baker: Well, my dad was a classic entrepreneur.
    [Show full text]
  • Lightweight Django USING REST, WEBSOCKETS & BACKBONE
    Lightweight Django USING REST, WEBSOCKETS & BACKBONE Julia Elman & Mark Lavin Lightweight Django LightweightDjango How can you take advantage of the Django framework to integrate complex “A great resource for client-side interactions and real-time features into your web applications? going beyond traditional Through a series of rapid application development projects, this hands-on book shows experienced Django developers how to include REST APIs, apps and learning how WebSockets, and client-side MVC frameworks such as Backbone.js into Django can power the new or existing projects. backend of single-page Learn how to make the most of Django’s decoupled design by choosing web applications.” the components you need to build the lightweight applications you want. —Aymeric Augustin Once you finish this book, you’ll know how to build single-page applications Django core developer, CTO, oscaro.com that respond to interactions in real time. If you’re familiar with Python and JavaScript, you’re good to go. “Such a good idea—I think this will lower the barrier ■ Learn a lightweight approach for starting a new Django project of entry for developers ■ Break reusable applications into smaller services that even more… the more communicate with one another I read, the more excited ■ Create a static, rapid prototyping site as a scaffold for websites and applications I am!” —Barbara Shaurette ■ Build a REST API with django-rest-framework Python Developer, Cox Media Group ■ Learn how to use Django with the Backbone.js MVC framework ■ Create a single-page web application on top of your REST API Lightweight ■ Integrate real-time features with WebSockets and the Tornado networking library ■ Use the book’s code-driven examples in your own projects Julia Elman, a frontend developer and tech education advocate, started learning Django in 2008 while working at World Online.
    [Show full text]
  • MELT a Translated Domain Specific Language Embedded in the GCC
    MELT a Translated Domain Specific Language Embedded in the GCC Compiler Basile STARYNKEVITCH CEA, LIST Software Safety Laboratory, boˆıte courrier 94, 91191 GIF/YVETTE CEDEX, France [email protected] [email protected] The GCC free compiler is a very large software, compiling source in several languages for many targets on various systems. It can be extended by plugins, which may take advantage of its power to provide extra specific functionality (warnings, optimizations, source refactoring or navigation) by processing various GCC internal representations (Gimple, Tree, ...). Writing plugins in C is a complex and time-consuming task, but customizing GCC by using an existing scripting language inside is impractical. We describe MELT, a specific Lisp-like DSL which fits well into existing GCC technology and offers high-level features (functional, object or reflexive programming, pattern matching). MELT is translated to C fitted for GCC internals and provides various features to facilitate this. This work shows that even huge, legacy, software can be a posteriori extended by specifically tailored and translated high-level DSLs. 1 Introduction GCC1 is an industrial-strength free compiler for many source languages (C, C++, Ada, Objective C, Fortran, Go, ...), targetting about 30 different machine architectures, and supported on many operating systems. Its source code size is huge (4.296MLOC2 for GCC 4.6.0), heterogenous, and still increasing by 6% annually 3. It has no single main architect and hundreds of (mostly full-time) contributors, who follow strict social rules 4. 1.1 The powerful GCC legacy The several GCC [8] front-ends (parsing C, C++, Go .
    [Show full text]
  • App Development Courses/Certificate Mississippi Curriculum Framework
    App Development Courses/Certificate Mississippi Curriculum Framework Apple/Swift Same CIP as IST 11.0201 Computer Programming/ Programmer, General Same CIP as IST 11.0202 Computer Programming, Specific Applications. July 2019 Published by: Mississippi Community College Board Division of Workforce, Career, and Technical Education 3825 Ridgewood Road Jackson, MS 39211 Phone: 601‐432‐6155 Email: [email protected] 1 FACULTY WRITING TEAM MEMBERS Brandon Sesser, East Mississippi Community College David Rose, Hinds Community College Roderick Kwan, Hinds Community College Kathy Boyte, Hinds Community College Kenneth Boyte, Hinds Community College Cody Robertson, Jones County Junior College Robin Hayes, Mississippi Gulf Coast Community College Dr. James Gruich, Mississippi Gulf Coast Community College Natasha Lewis, Northeast Mississippi Community College Nick Jackson, Northeast Mississippi Community College Tony Bouthwell, Meridian Community College Daniel Ethridge, Meridian Community College ADMINISTRATOR WRITING TEAM MEMBERS Joe Cook, Assistant Dean, East Mississippi Community College Dr. Richie McAlister, Vice President, Meridian Community College Lori Smith, Coordinator, Meridian Community College Joseph Knight, Dean, Business Development, Meridian Community College Sherry Franklin, Associate Vice President, Hinds Community College Rod Tolbert, Dean, Jones County Junior College Jason Mattox, Associate Vice President Northeast Mississippi Community College John Shows, Associate Vice President, Mississippi Gulf Coast Community College Dr.
    [Show full text]
  • Maelstrom Web Browser Free Download
    maelstrom web browser free download 11 Interesting Web Browsers (That Aren’t Chrome) Whether it’s to peruse GitHub, send the odd tweetstorm or catch-up on the latest Netflix hit — Chrome’s the one . But when was the last time you actually considered any alternative? It’s close to three decades since the first browser arrived; chances are it’s been several years since you even looked beyond Chrome. There’s never been more choice and variety in what you use to build sites and surf the web (the 90s are back, right?) . So, here’s a run-down of 11 browsers that may be worth a look, for a variety of reasons . Brave: Stopping the trackers. Brave is an open-source browser, co-founded by Brendan Eich of Mozilla and JavaScript fame. It’s hoping it can ‘save the web’ . Available for a variety of desktop and mobile operating systems, Brave touts itself as a ‘faster and safer’ web browser. It achieves this, somewhat controversially, by automatically blocking ads and trackers. “Brave is the only approach to the Web that puts users first in ownership and control of their browsing data by blocking trackers by default, with no exceptions.” — Brendan Eich. Brave’s goal is to provide an alternative to the current system publishers employ of providing free content to users supported by advertising revenue. Developers are encouraged to contribute to the project on GitHub, and publishers are invited to become a partner in order to work towards an alternative way to earn from their content. Ghost: Multi-session browsing.
    [Show full text]
  • The American Short Story: from Poe to O. Henry. a Hypercard Application
    DOCUMENT RESUME ED 330 315 IR 014 934 AUTHOR May, Charles TITLE The American Short Story: From Poe to 0. Henry. A HyperCard Application. INSTITUTION California State Univ., Long Beach. English Dept. PUB DATE 90 NOTE 38p.; Supported by the 1989-90 Dissemination Grant from the California State University Lottery Revenue Program for Instructional Development and Technology. PUB TYPE Guides - Non-Classroom Use (055) EDRS PRICE MF01/PCO2 Plus Postage. DESCRIPTORS Authoring Aids (Programing); *Computer Assisted Instruction; Computer Software Development; Elementary Secondary Education; English Instruction; English Literature; Higher Education; *Hypermedia; Short Stories IDENTIFIERS Apple Macintosh ABSTRACT This report describes a computer-assisted instructional application created on a Macintosh computer using HyperCard software. The iL3tructional program is aimed at those who teach college-level English education courses and those whoare planning a course on the use of technology in the English classroom. It is noted that the HyperCard software was developed to aid in teaching English literature, specifically short stories, and provides access not only to the text of the short story, but also to concepts and patterns throughout the story. The rationale behind using the Macintosh computer, the concept of hypermedia and hypertext and, in particular, the use of HyperCard on the Macintosh, are discussed. Also described is the theory of short story analysis that underlies the computer application. The report concludes with a detailed discussion of programming using the HyperCard software, and suggests a method for creating unique applications to meet the needs of individual classroomE. (DB) *********************************************************************** * Reproductions supplied by EDRS are the best that can be made * * from the original document.
    [Show full text]
  • Hypertalk: the Language for the Rest of Us
    HyperTalk: The Language for the Rest of Us Kyle Wheeler January 18, 2004 Contents 1 Introduction 1 Introduction 1 There is, perhaps, no piece of software written by Ap- ple Computer, Inc. more prone to generating extreme 2 History 1 emotions in its users than its operating system. Next 2.1 TheBirth ................ 1 below that, however, is HyperCard. Designed and re- 2.2 TheLife................. 2 leased in 1987 by Bill Atkinson [7], HyperCard was an 2.3 TheDeath................ 2 instant success. Leveraging the power and simplicity 2.4 TheLegend ............... 2 of its scripting language, HyperTalk, designed by Bill Atkinson and by Dan Winkler [1], HyperCard demys- 3 Goals 2 tified the art of creating software. The language has a grammar and syntax similar to English, and as such ap- 4 Syntax Semantics 3 pealed to computer hobbyists, teachers, and the uniniti- 4.1 Implementation Notes . 3 ated alike. The commands HyperTalk uses are similar to 4.2 Objects ................. 3 those used by the Macintosh Toolbox, the base-level API 4.3 Messages ................ 4 of Apple’s Macintosh operating system, and the logical 4.4 Handlers................. 4 structure is similar to Pascal and organized in an event- 5 Bibliography 4 driven manner [8]. A BNF 6 A.1 Scripts.................. 6 2 History A.2 Expressions ............... 6 A.3 Ordinals and Positions . 7 2.1 The Birth A.4 Chunks and Containers . 7 HyperTalk was born as the core scripting language of A.5 Objects ................. 7 the HyperCard application, developed by Bill Atkinson1 A.6 Commands . 8 for Apple Computer, Inc. in 1987 under the condition A.6.1 Command Nonterminals .
    [Show full text]
  • Coffeescript Accelerated Javascript Development.Pdf
    Download from Wow! eBook <www.wowebook.com> What readers are saying about CoffeeScript: Accelerated JavaScript Development It’s hard to imagine a new web application today that doesn’t make heavy use of JavaScript, but if you’re used to something like Ruby, it feels like a significant step down to deal with JavaScript, more of a chore than a joy. Enter CoffeeScript: a pre-compiler that removes all the unnecessary verbosity of JavaScript and simply makes it a pleasure to write and read. Go, go, Coffee! This book is a great introduction to the world of CoffeeScript. ➤ David Heinemeier Hansson Creator, Rails Just like CoffeeScript itself, Trevor gets straight to the point and shows you the benefits of CoffeeScript and how to write concise, clear CoffeeScript code. ➤ Scott Leberknight Chief Architect, Near Infinity Though CoffeeScript is a new language, you can already find it almost everywhere. This book will show you just how powerful and fun CoffeeScript can be. ➤ Stan Angeloff Managing Director, PSP WebTech Bulgaria Download from Wow! eBook <www.wowebook.com> This book helps readers become better JavaScripters in the process of learning CoffeeScript. What’s more, it’s a blast to read, especially if you are new to Coffee- Script and ready to learn. ➤ Brendan Eich Creator, JavaScript CoffeeScript may turn out to be one of the great innovations in web application development; since I first discovered it, I’ve never had to write a line of pure JavaScript. I hope the readers of this wonderful book will be able to say the same. ➤ Dr. Nic Williams CEO/Founder, Mocra CoffeeScript: Accelerated JavaScript Development is an excellent guide to Coffee- Script from one of the community’s most esteemed members.
    [Show full text]
  • Safe, Fast and Easy: Towards Scalable Scripting Languages
    Safe, Fast and Easy: Towards Scalable Scripting Languages by Pottayil Harisanker Menon A dissertation submitted to The Johns Hopkins University in conformity with the requirements for the degree of Doctor of Philosophy. Baltimore, Maryland Feb, 2017 ⃝c Pottayil Harisanker Menon 2017 All rights reserved Abstract Scripting languages are immensely popular in many domains. They are char- acterized by a number of features that make it easy to develop small applications quickly - flexible data structures, simple syntax and intuitive semantics. However they are less attractive at scale: scripting languages are harder to debug, difficult to refactor and suffers performance penalties. Many research projects have tackled the issue of safety and performance for existing scripting languages with mixed results: the considerable flexibility offered by their semantics also makes them significantly harder to analyze and optimize. Previous research from our lab has led to the design of a typed scripting language built specifically to be flexible without losing static analyzability. Inthis dissertation, we present a framework to exploit this analyzability, with the aim of producing a more efficient implementation Our approach centers around the concept of adaptive tags: specialized tags attached to values that represent how it is used in the current program. Our frame- work abstractly tracks the flow of deep structural types in the program, and thuscan ii ABSTRACT efficiently tag them at runtime. Adaptive tags allow us to tackle key issuesatthe heart of performance problems of scripting languages: the framework is capable of performing efficient dispatch in the presence of flexible structures. iii Acknowledgments At the very outset, I would like to express my gratitude and appreciation to my advisor Prof.
    [Show full text]
  • The Use and Application of Open Source Integrated Library System in Academic Libraries in Nigeria: Koha Example
    University of Nebraska - Lincoln DigitalCommons@University of Nebraska - Lincoln Library Philosophy and Practice (e-journal) Libraries at University of Nebraska-Lincoln 2015 The seU and Application of Open Source Integrated Library System in Academic Libraries in Nigeria: Koha Example Emeka C. Uzomba Mr. Federal University,Oye-Ekiti, Ekiti State, [email protected] OLUWATOFUNMI JESUDUNNI OYEBOLA Mrs. Federal University Oye-Ekiti, Nigeria, [email protected] ANTHONY CHUKWUMA IZUCHUKWU Mr. University of Nigeria, Nsukka, [email protected] Follow this and additional works at: http://digitalcommons.unl.edu/libphilprac Part of the Educational Assessment, Evaluation, and Research Commons, and the Library and Information Science Commons Uzomba, Emeka C. Mr.; OYEBOLA, OLUWATOFUNMI JESUDUNNI Mrs.; and IZUCHUKWU, ANTHONY CHUKWUMA Mr., "The sU e and Application of Open Source Integrated Library System in Academic Libraries in Nigeria: Koha Example" (2015). Library Philosophy and Practice (e-journal). 1250. http://digitalcommons.unl.edu/libphilprac/1250 THE USE AND APPLICATION OF OPEN SOURCE INTEGRATED LIBRARY SYSTEM IN ACADEMIC LIBRARIES IN NIGERIA: KOHA EXAMPLE BY EMEKA CHRISTIAN UZOMBA Federal University Oye-Ekiti (Corresponding Author) Phone: +2348036996747 P.M.B.2273 Oye-Ekiti, Ekiti State, Nigeria. [email protected] , [email protected] , OLUWATOFUNMI JESUDUNNI OYEBOLA Federal University Oye-Ekiti (Co-Author) Phone: +2348030617819 P.M.B.2273 Oye-Ekiti, Ekiti State, Nigeria. [email protected] , [email protected] ANTHONY CHUKWUMA IZUCHUKWU Department of Library and Information Science, University of Nigeria, Nsukka (Co-Author) Phone: +2348067699821 [email protected] ABSTRACT This study examined the use of open source integrated library system in academic libraries in Nigeria, with the aim of highlighting the capabilities and potentials of open source software (Koha) and its practical importance to academic libraries across the globe.
    [Show full text]
  • Learning Javascript Design Patterns
    Learning JavaScript Design Patterns Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Learning JavaScript Design Patterns by Addy Osmani Copyright © 2012 Addy Osmani. All rights reserved. Revision History for the : 2012-05-01 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449331818 for release details. ISBN: 978-1-449-33181-8 1335906805 Table of Contents Preface ..................................................................... ix 1. Introduction ........................................................... 1 2. What is a Pattern? ...................................................... 3 We already use patterns everyday 4 3. 'Pattern'-ity Testing, Proto-Patterns & The Rule Of Three ...................... 7 4. The Structure Of A Design Pattern ......................................... 9 5. Writing Design Patterns ................................................. 11 6. Anti-Patterns ......................................................... 13 7. Categories Of Design Pattern ............................................ 15 Creational Design Patterns 15 Structural Design Patterns 16 Behavioral Design Patterns 16 8. Design Pattern Categorization ........................................... 17 A brief note on classes 17 9. JavaScript Design Patterns .............................................. 21 The Creational Pattern 22 The Constructor Pattern 23 Basic Constructors 23 Constructors With Prototypes 24 The Singleton Pattern 24 The Module Pattern 27 iii Modules 27 Object Literals 27 The Module Pattern
    [Show full text]