JavaScript Spessore
JavaScript Spessore (Last Chance)

Retired

This book is no longer available for sale.

JavaScript Spessore

Last updated on 2016-12-24

About the Book

Programming languages are (loosely) defined by their basic activity. In FORTRAN, you program with numbers. In C, you program with pointers. In ML, you program with types. And in JavaScript, you program with functions.

Functions are very interesting building blocks for programs, because they compose: It’s easy to build a programming style based on making many small things that can be combined and recombined to make bigger things.

This is the basis of the vaunted “Unix Philosophy:” Write small utilities and scripts that compose neatly. This is also the JavaScript philosophy: Make small things that can be combined and recombined to make bigger things.

Programming with objects can be done in this style, and JavaScript makes it particularly easy to combine and recombine small parts. Classes can be built from traits instead of from superclasses. Objects can delegate and forward behaviour to helpers and meta-objects. Adaptors can be written to change an object’s interface without needing to create another class in a hierarchy.

JavaScript Spessore is a book that describes this approach to working with objects and metaobjects in JavaScript. It’s exactly the same philosophy as you find in JavaScript Allongé, only it talks to programming with objects instead of programming with functions.

JavaScript Spessore will show you how to build JavaScript programs that scale in code, in time, and across a team, using the one technique that has passed the test of time: Objects and metaobjects that have a single responsibility, are decoupled from each other, and can be composed freely.

Go ahead, read it for yourself. It’s free.

About the Author

Reg “raganwald” Braithwaite
Reg “raganwald” Braithwaite

When he's not shipping CoffeeScript, JavaScript, Ruby, and Java applications scaling out to millions of users, Reg "Raganwald" Braithwaite creates programming libraries such as Allong.es, Method Combinators, Katy, JQuery Combinators, YouAreDaChef, andand, and others.

He writes primarily about programming. Find out more on his  home page.

Table of Contents

  • Prefaces
    • Taking a page out of LiSP
    • JavaScript Allongé
  • The Big Idea
    • Is JavaScript Functional or Object-Oriented?
    • JavaScript Algebras
    • Composeability
  • JavaScript’s Objects
    • Data Structures
    • Plain Old JavaScript Objects
    • Encapsulating State with Closures
    • Composition and Extension
    • This and That
    • What Context Applies When We Call a Function?
    • Extending Objects
  • Object Recipes
    • Records and Value Objects
    • Accessors
    • Hiding Object Properties
    • Proxies
  • Instances and Prototypes
    • Prototypes are Simple, it’s the Explanations that are Hard To Understand
    • Binding Functions to Contexts
    • Object Methods
    • Extending Objects with Delegation
  • Methods
    • What is a Method?
    • The Letter and the Spirit of the Law
    • Composite Methods
    • Method Objects
    • Predicate Dispatch
  • Metaobjects
    • Why Metaobjects?
    • Mixins, Forwarding, and Delegation
    • Later Binding
    • Conflict Resolution Policies
    • Delegation via Prototypes
    • Singleton Prototypes
    • Shared Prototypes
    • Metaobjects and “self”
  • Interlude: Greenspun’s Tenth Rule
  • Encapsulation and Composition
    • The Encapsulation Problem
    • Proxies
    • Encapsulation for Metaobjects
    • encapsulate(...)
    • Encapsulation and Self
    • Privacy
    • Closing Encapsulated Objects
    • Decoupling with Partial Proxies
    • Composing Metaobjects
    • Transforming and Decorating Metaobjects
    • Playing Well with Classes
  • Inheritance, Ontologies, and Semantic Types
    • Class Hierarchies
    • Getting the Semantics Right
    • Structural vs. Semantic Typing
    • Interlude: “is-a” and “was-a”
    • The Expression Problem
    • Multiple Dispatch
  • Metaobject Protocols
    • Genesis
    • The Class Class
    • Class Mixins
    • Well, Actually…
  • Source Code Examples
    • Object Recipes
    • Methods
    • Metaobjects
    • Greenspun’s Tenth Rule
    • Encapsulation and Composition
    • Inheritance
    • Utility Functions
  • Copyright Notice
  • About The Author

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors, publishers and universities use Leanpub to publish amazing in-progress and completed books and courses, just like this one. You can use Leanpub to write, publish and sell your book or course as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub