Index

A note on the digital index

A link in an index entry is displayed as the section title in which that entry appears. Because some sections have multiple index markers, it is not unusual for an entry to have several links to the same section. Clicking on any link will take you directly to the place in the text in which the marker appears.

Symbols

$ shortcut, jQuery, Global Import
$$() function, Console Helpers
$() function, Console Helpers
$x() function, Console Helpers
() braces, anonymous functions, Module Pattern
_ (underscore), prefixing private properties, Adding Private Functions
_.bindAll(), Binding and Context

A

Access-Control-Allow-Origin header, Loading Data with Ajax
Access-Control-Request-Headers header, Loading Data with Ajax
addEventListener(), Listening to Events, Context Change
addressing references, Addressing References
Adobe Flash, Storing Data Locally
afterEach() function, Jasmine
Ajax
crawling, Ajax Crawling
jQuery, Ajax
loading data with, Loading Data with AjaxLoading Data with Ajax
progress, Ajax Progress
syncing and Spine, Persistence
ajax() function, Ajax
ajaxError event, Persistence
alpha transparency, Colors
AMD format, RequireJS
Apache web server, relative expiration date, Caching
APIs
History API, Using the HTML5 History API
HTML5 file APIs, Browser Support
jQuery.tmpl templating API, Templates
jQuery’s selectors API, jQuery Primer
pushState() and replaceState() history API, Controllers
Underscore’s AP, The Backbone Library
WebSocket API, WebSockets
XMLHttpRequest API, Uploading Files
App.log() function, The Console
append() function, DOM Manipulation
apply(), Function Invocation
arguments variable, Function Invocation
assert libraries, Assertions
assert() function, Assertions
assertEqual() function, Assertions
assertion types, QUnit
assertions, Assertions
async attribute, Performance
attributes
async attribute, Performance
Backbone library models, Models and Attributes
defer attribute, Performance
files in HTML5, Getting Information About Files
multiple attribute, File Inputs
originalEvent attribute, Dragging
returning, Adding Local Storage to Our ORM
validating an instance’s attributes, Models and Attributes
whitelisting, On the Server Side
auditors, deployment, Auditors
autoLink() function, Template Helpers

B

Backbone library, The Backbone LibraryBuilding a To-Do List
collections, Collections
controllers, Controllers
models, Models
syncing with the server, Syncing with the ServerCustom Behavior
to-do lists, Building a To-Do ListBuilding a To-Do List
views, Views
Backbone.sync() function, Syncing with the Server, Custom Behavior
backgrounds, CSS3, Multiple Backgrounds
beforecopy event, Copying
beforecut event, Copying
beforeEach() function, Jasmine, Jasmine
beforepaste event, Pasting
bind() function, Controlling Scope in Our Class Library, Event Libraries, Delegating Events, Events
binding, about, Binding
blobs and slices, Blobs and Slices
border images in CSS3, Border Images, Border Images
border-radius style, Rounded Corners
box model, flexible box model: CSS3, Flexible Box Model
box sizing, CSS3, Box Sizing
box-shadow style, Drop Shadows
breakpoints, Using the Debugger
browse buttons, Custom Browse Buttons
browsers
CommonJS modules, Modules and the Browser
copy and paste, Copy and Paste
CORS, Loading Data with Ajax
CSS3, CSS3 ReferenceCreating a Layout
DOMContentLoaded event, Event Libraries
drag and drop, Drag and Drop
event types, Listening to Events
files, Browser Support
Firebug add-on, Firebug
graceful degradation, CSS3 Reference
hashchange events, Detecting Hash Changes
local storage, Storing Data Locally
performance, Performance
testing JavaScript, Testing and Debugging
uploading files, Uploading Files
bubbles event, The Event Object
bubbling, Spine, Delegating Events

C

Cache-Control, Caching
caching, deployment, Caching
call(), Function Invocation
callbacks
ajax() function, Ajax
Backbone, Custom Behavior
binding to model events, Model Events
click() callback, Controlling Scope in Our Class Library
context changes in event callbacks, Binding and Context
extended and included callbacks, Adding Methods to Our Class Library
hash of, Delegating Events
jQuery has some iterators,, DOM Traversal
Model.created() callback, Addressing References
registering to events, Adding a Bit of Context
Spine libraries, Extending Classes
canceling
default drag/drop, Dropping
events, Canceling Events
Cappuccino, Pasting, The Backbone Library
CDNs (content delivery networks), Using a CDN
change event, State Machines, Binding Up Models, Sidebar Controller, Binding and Context, Syncing with the Server
change() function, Binding
chat room, Real-Time Architecture
Chrome, Web Inspector, Web Inspector
class, as a reversed keyword, Toward Modularity, Creating Classes
classes
adding functions to, Adding Functions to Classes
adding inheritance to class libraries, Adding Inheritance to Our Class Library
adding methods to class libraries, Adding Methods to Our Class Library
class inheritance using prototype, Class Inheritance Using Prototype
controlling scope in class libraries, Controlling Scope in Our Class Library
MVC pattern, Toward Modularity, Creating Classes
Spine libraries, Classes
Spine.List class, Sidebar Controller
WebSockets, WebSockets
XMLHttpRequest class, Loading Data with Ajax
click event, Custom Browse Buttons
click() callback, Controlling Scope in Our Class Library
clipboardData object, Copying
clipboardData property, Pasting
collections
Backbone library, Collections
populating: Backbone library, Populating Collections
colors
CSS extensions, Colors
CSS3, Colors
Comet techniques, Real Time’s History
CommonJS
about, CommonJS
module loaders, Module Loaders
CommonJS initiative, CommonJS
comparator() function, Controlling a Collection’s Order
compression, Gzip, Gzip Compression
concatenation, Wrapping Up Modules
console, debugging, The Console
console.error(), The Console
console.log() function, The Console
console.profile() and console.profileEnd(), Profile and Timing
console.time(name) and console.timeEnd(name), Profile and Timing
console.trace(), The Console
console.warn(), The Console
constructor functions, Toward Modularity, Creating Classes
contacts manager in Spine libraries, Building a Contacts ManagerApp Controller
App controller, App Controller
contact model, Contact Model
Contacts controller, Contacts Controller
Sidebar controller, Sidebar Controller
content delivery networks (CDNs), Using a CDN
context, Adding a Bit of ContextDelegating Events
abstracting into a library, Abstracting into a Library
changing, Function Invocation, Context Change, Binding and Context, Events
delegating events, Delegating Events
controllers, Controllers and StateUsing the HTML5 History API
about, The Controller
abstracting into a library, Abstracting into a Library
accessing views, Accessing Views
adding context, Adding a Bit of ContextDelegating Events
App controller in contacts manager in Spine libraries, App Controller
Backbone library, Controllers
contacts controller in contacts manager in Spine libraries, Contacts Controller
delegating events, Delegating Events
loading controllers after the document, Loading Controllers After the Document
module pattern, Module Pattern
routing, RoutingUsing the HTML5 History API
Ajax crawling, Ajax Crawling
detecting hash changes, Detecting Hash Changes
HTML5 History API, Using the HTML5 History API
URL’s hash, Using the URL’s Hash
Spine libraries, ControllersThe Element Pattern
state machines, State Machines
cookies, Storing Data Locally
copy and paste, Copy and PastePasting
copy event, Copying
corners, rounding in CSS3, Rounded Corners
CORS (cross-origin resource sharing), Loading Data with Ajax
crawling, Ajax, Ajax Crawling
create() function, Adding ID Support, Classes, Models, Controllers
cross-browser event listeners, Event Libraries
cross-domain requests, security, Security with Cross-Domain Requests
CSS extensions, CSS ExtensionsLess.app
colors, Colors
including other stylesheets, Including Other Stylesheets
Less code, How Do I Use Less?
mixins, Mixins
nested rules, Nested Rules
variables, Variables
CSS gradient standard, Gradients
CSS sprites, Performance
css() function, DOM Manipulation
CSS3, CSS3 ReferenceCreating a Layout
border images, Border Images
box sizing, Box Sizing
colors, Colors
creating a layout, Creating a Layout
drop shadows, Drop Shadows
flexible box model, Flexible Box Model
graceful degradation, Graceful Degradation
gradients, Gradients
mixins, Mixins
multiple backgrounds, Multiple Backgrounds
prefixes, Prefixes
rounding corners, Rounded Corners
selectors, Selectors
text shadows, Text Shadow
transformations, Transformations
transitions, Transitions
CSS3
fonts, Fonts
fonts
CSS3, Fonts
cubic bezier curve, Transitions

D

data
loading, Loading in DataSecurity with Cross-Domain Requests
including data inline, Including Data Inline
JSONP, JSONP
security with cross-domain requests, Security with Cross-Domain Requests
with Ajax, Loading Data with AjaxLoading Data with Ajax
models, The Model
storing locally, Storing Data Locally
dataTransfer object, Dragging, Dropping
dataTransfer.getData() function, Dropping
dataType option, Ajax
deactivate() function, State Machines
debugging, InspectorsProfile and Timing
(see also testing)
console, The Console
inspectors, Inspectors
network requests, Analyzing Network Requests
profile and timing, Profile and TimingProfile and Timing
using the debugger, Using the Debugger
declaring CommonJS modules, Declaring a Module
deepEqual() function, QUnit
defaults
browsers and default actions to events, Canceling Events
caching, Caching
constructor function return context, Toward Modularity, Creating Classes
controllers extending, Controller Events
defer attribute, Performance
define() function, RequireJS
degradation, graceful degradation: CSS3, Graceful Degradation
delegate() function, Delegating Events, Delegating Events
delegating
Backbone library events, Delegating Events
events, Delegating Events, Delegating Events
dependency management, Dependency ManagementFUBCs
CommonJS, CommonJS
FUBCs, FUBCs
module alternative, Module Alternatives
module loaders, Module Loaders
wrapping up modules, Wrapping Up Modules
deployment, DeployingResources
auditors, Auditors
caching, Caching
CDNs, Using a CDN
Gzip compression, Gzip Compression
minification, Minification
performance, Performance
resources, Resources
descendants, CSS3, Direct Descendants
describe() function, Jasmine
destroy() function, The Model, Context, Models
dir() function, Console Helpers
direct descendants, CSS3, Direct Descendants
distributed testing, Distributed Testing
document.createElement(), Dynamically Rendering Views
document.ready event, Events, Being a Good Citizen
DOM elements
controllers, Controllers
creating, Dynamically Rendering Views
DOM, jQuery, DOM TraversalDOM Manipulation
domains
same origin policy, Loading Data with Ajax
whitelist of, Security with Cross-Domain Requests
DOMContentLoaded event, Event Libraries, Analyzing Network Requests
DownloadURL type, Dragging
drag and drop
files, Drag and DropCancel Default Drag/Drop
jQuery drag-and-drop uploader, jQuery Drag and Drop UploaderUploading the File
dragenter event, Dropping
dragover event, Dropping
dragstart event, Dragging
drivers, testing, Drivers
drop areas, Creating a Drop Area
drop event, Creating a Drop Area
drop shadows, CSS3, Drop Shadows
dropping files, Dropping
dynamically rendering views, Dynamically Rendering Views

E

el property, Controllers
element pattern, The Element Pattern
elements
associated with events, The Event Object
DOM elements, Dynamically Rendering Views
mapping, Accessing Views
Spine libraries’ controllers, Elements
empty() function, DOM Manipulation
Envjs, Headless Testing
equal() function, QUnit
error event, Validation, Models and Attributes
ETags, Caching
event bubbling, Event Ordering
event callbacks
context changes, Binding and Context
event capturing, Event Ordering
events, Events and ObservingNon-DOM Events
ajaxError event, Persistence
Backbone library, Delegating Events
canceling, Canceling Events
change event, State Machines, Binding Up Models, Sidebar Controller, Binding and Context, Syncing with the Server
click event, Custom Browse Buttons
context change, Context Change
controllers and event listeners, The Controller
copying and pasting events, Copying
custom events, Custom EventsCustom Events and jQuery Plug-Ins
delegating, Delegating Events, Delegating Events, Delegating Events
document.ready event, Events, Being a Good Citizen
DOMContentLoaded event, Analyzing Network Requests
drag and drop, Drag and Drop
dragenter event, Dropping
dragover event, Dropping
dragstart event, Dragging
drop event, Creating a Drop Area
error event, Validation, Models and Attributes
event libraries, Event Libraries
event object, The Event Object
global events in Spine libraries’ controllers, Global Events
hash of, Delegating Events
hashchange events, Detecting Hash Changes
jQuery, Events
keydown event, Delegating Events
listening to, Listening to Events
load event, Ajax Progress
non-DOM events, Non-DOM EventsNon-DOM Events
onhashchange event, Controllers
onopen event, WebSockets
ordering, Event Ordering
pasting events, Pasting
popstate events, Using the HTML5 History API
progress event, Ajax Progress, Ajax Progress
real-time architecture, Real-Time Architecture
refresh event, Populating Collections
registering callbacks to, Adding a Bit of Context
show:contact event, Contacts Controller
Spine libraries, Events, Model Events
Spine libraries’ controller events, Controller Events
exists() function, Models
expect() function, Jasmine
expectation management, Perceived Speed
Expires header, Caching
export, global export, Global Export
extend() function, Adding Methods to Our Class Library, Extending Classes, Models, Models
extending
CSS, CSS ExtensionsLess.app
jQuery, Extensions
extensions, wrapping, Extensions

F

fetch() function, Syncing with the Server
fetchRemote() function, MVC and Namespacing
FileReader object, Reading Files
files, Working with FilesUploading the File
browser support, Browser Support
copy and paste, Copy and PastePasting
custom browse buttons, Custom Browse Buttons
drag and drop, Drag and DropCancel Default Drag/Drop
getting information about, Getting Information About Files
inputs, File Inputs
jQuery drag-and-drop uploader, jQuery Drag and Drop UploaderUploading the File
reading, Reading Files
uploading, Uploading FilesAjax Progress
find() function, Persisting Records, Models
find() operation, Addressing References
Finite State Machines (FSMs), State Machines
Firebug, Firebug, Auditors
Firebug Lite, Firebug
Firefox
Firebug, Firebug
Firebug and YSlow, Auditors
Selenium IDE, Drivers
firewalls, WebSockets, WebSockets
flexible box model, CSS3, Flexible Box Model
FlyScript, Wrapping Up Modules
Followers and Followees collections, Collections
FormData instance, Uploading Files
FSMs (Finite State Machines), State Machines
FUBCs (flashes of unbehaviored content), FUBCs
functions
$$() function, Console Helpers
$() function, Console Helpers
$x() function, Console Helpers
activate() function, State Machines
add() function, Collections
addClass() function, DOM Manipulation
addEventListener(), Listening to Events
adding private functions, Adding Private Functions
adding to classes, Adding Functions to Classes
afterEach() function, Jasmine
ajax() function, Ajax
anonymous functions, Adding Private Functions, Module Pattern
App.log() function, The Console
append() function, DOM Manipulation
assert() function, Assertions
assertEqual() function, Assertions
autoLink() function, Template Helpers
Backbone.sync() function, Syncing with the Server, Custom Behavior
beforeEach() function, Jasmine, Jasmine
bind() function, Controlling Scope in Our Class Library, Event Libraries, Delegating Events, Events
change() function, Binding
clear() function, Console Helpers
comparator() function, Controlling a Collection’s Order
console.log() function, The Console
constructor functions, Toward Modularity, Creating Classes
create() function, Adding ID Support, Classes, Models, Controllers
css() function, DOM Manipulation
dataTransfer.getData() function, Dropping
deactivate() function, State Machines
deepEqual() function, QUnit
define() function, RequireJS
delegate() function, Delegating Events, Delegating Events
describe() function, Jasmine
destroy() function, The Model, Context, Models
dir() function, Console Helpers
empty() function, DOM Manipulation
equal() function, QUnit
exists() function, Models
expect() function, Jasmine
extend() function, Adding Methods to Our Class Library, Extending Classes, Models, Models
fetch() function, Syncing with the Server
fetchRemote() function, MVC and Namespacing
find() function, Persisting Records, Models
function invocation, Function Invocation
generic helper functions inside the view, Template Helpers
get() function, Models and Attributes
getData() function, Pasting
getter and setter functions, DOM Manipulation
global variables and functions, The Model
history.back() and history.forward() functions, Using the HTML5 History API
history.pushState() function, Using the HTML5 History API
include() function, Adding Methods to Our Class Library, Abstracting into a Library, Extending Classes, Models
init() function, Prototypal Inheritance, Accessing Views
initialize() instance function, Models, Collections
inspect() function, Console Helpers
it() function, Jasmine
jQuery.ajax() function, Loading Data with Ajax
jQuery.tmpl() function, Templates
keys() function, Console Helpers
load() function, Adding a Bit of Context, CommonJS
Math.random() function, Adding ID Support
module() function, QUnit
namespacing, MVC and Namespacing
Object.create() function, Prototypal Inheritance, Classes
post() function, Submitting New Records to the Server
prepend() function, DOM Manipulation
proxy() function, Controlling Scope in Our Class Library, Context Change, Abstracting into a Library, Context
ready() function, Event Libraries
refresh() function, Populating Collections
remove() function, Collections
removeEventListener(), Listening to Events
render() function, Binding and Context
require() function, CommonJSYabble
reventDefault() function, Canceling Events
save() function, Models, Syncing with the Server
search() function, Controllers
send() function, Uploading Files, WebSockets
set() function, Models and Attributes
setData() function, Dragging
setDragImage() function, Dragging
slice() function, Blobs and Slices
stopImmediatePropagation() function, Canceling Events
stopPropagation() function, Canceling Events
text() function, DOM Manipulation
timing functions, Transitions
toJSON() function, Rendering Views
trigger() function, Custom Events
update() function, Addressing References
uploadFile() function, Creating a Drop Area
validate() function, Models and Attributes
values() function, Console Helpers

G

GCF (Google Chrome Frame), Google Chrome Frame
get() function, Models and Attributes
getData() function, Pasting
getJSON(), Ajax
getter and setter functions, DOM Manipulation
global export, Global Export
global import, Global Import
global variables and functions, The Model
Google
Ajax Crawling specification, Ajax Crawling
GCF, Google Chrome Frame
Pagerank algorithm, Resources
V8 JavaScript engine, Zombie
Google Analytics, Performance
graceful degradation
about, CSS3 Reference
CSS3, Graceful Degradation
gradients, CSS3, Gradients
Growl jQuery plug-in, Creating a Growl jQuery Plug-in
GUID generators, Adding ID Support
Gzip compression, Gzip Compression

H

hash
default, Models and Attributes
detecting hash changes, Detecting Hash Changes
events and callbacks, Delegating Events
routing and URL’s hash, Using the URL’s Hash
headless testing, Headless TestingIchabod
Ichabod library, Ichabod
Zombie.js, Zombie
helpers
defined, The View
templates, Template Helpers
history
JavaScript, Preface, Early Days
real-time Web, Real Time’s History
History API, Using the HTML5 History API
history.back() and history.forward() functions, Using the HTML5 History API
history.pushState() function, Using the HTML5 History API
HJS plug-in, Class Libraries
Holla, Holla, Real-Time Architecture
HTML
prerendering, Views and Templating
templating, Building a To-Do List
HTML5
drag and drop, Drag and Drop
History API, Using the HTML5 History API
HTML5 file APIs, Browser Support
local storage, Storing Data Locally
WebSockets, WebSockets
HTTP requests, performance, Performance

I

Ichabod library, Ichabod
ID support, Adding ID Support
If-Modified-Since header, Caching
If-None-Match header, Caching
images, border images in CSS3, Border Images
immutable properties, Adding Private Functions
import, global import, Global Import
include() function, Adding Methods to Our Class Library, Abstracting into a Library, Extending Classes, Models
including data inline, Including Data Inline
inheritance
adding inheritance to class libraries, Adding Inheritance to Our Class Library
class inheritance using prototype, Class Inheritance Using Prototype
classes, Class Libraries
prototypal inheritance, Prototypal Inheritance
init() function, Prototypal Inheritance, Accessing Views
initialize() instance function, Models, Collections
inputs, files, File Inputs
inspect() function, Console Helpers
inspectors, Inspectors
interfaces (see views)
interpolating variables, Templates
invocation, function invocation, Function Invocation

J

Jasmine, JasmineJasmine
JavaScript
history, Preface, Early Days
Less code, Via JavaScript
minification, Minification
jQuery, jQuery PrimerCreating a Growl jQuery Plug-in
$ shortcut, Global Import
about, jQuery Primer
Ajax, Ajax
apply() and call(), Function Invocation
being a good web citizen, Being a Good Citizen
DOM manipulation, DOM Manipulation
DOM traversal, DOM Traversal
drag-and-drop uploader, jQuery Drag and Drop UploaderUploading the File
events, Events
extensions, Being a Good Citizen, Extensions
Growl plug-in, Creating a Growl jQuery Plug-in
plug-ins and custom events, Custom Events and jQuery Plug-Ins
jQuery() selector, Accessing Views
jQuery.ajax() function, Loading Data with Ajax
jquery.browse.js plug-in, Custom Browse Buttons
jQuery.extend(), Adding ORM Properties
jQuery.fn object, Extensions
jquery.js, Module Alternatives
jQuery.prototype, Extensions
jQuery.proxy(), Adding a Bit of Context, Events
jQuery.tmpl, Building a To-Do List
jQuery.tmpl library, Templates
jquery.upload.js plug-in, Uploading Files
JSMin, Minification
JSON objects, Including Data Inline
JSONP (JSON with padding), JSONP

K

keyboard events, The Event Object
keydown event, Delegating Events
keys() function, Console Helpers
keywords
class as a reserved keyword, Toward Modularity, Creating Classes
new keyword and calling constructor functions, Toward Modularity, Creating Classes
klass, Toward Modularity, Creating Classes

L

LABjs, LABjs
Last-Modified header, Caching
layouts, creating in CSS3, Creating a Layout
Less code, CSS extensions, How Do I Use Less?
Less.app, Less.app
libraries
adding inheritance to class libraries, Adding Inheritance to Our Class Library
assert libraries, Assertions
Backbone library, The Backbone LibraryBuilding a To-Do List
CDN, Using a CDN
class libraries, Adding Methods to Our Class Library, Class Libraries, Class Libraries
controlling scope in class libraries, Controlling Scope in Our Class Library
Envjs, Headless Testing
event libraries, Event Libraries
Ichabod library, Ichabod
jQuery, jQuery PrimerCreating a Growl jQuery Plug-in
Selenium, Drivers
Spine libraries, Class Libraries, The Spine LibraryApp Controller
templating libraries, Templates
underscore.js library, The Backbone Library
linear and radial gradients, Gradients
listening to events, Listening to Events
literals, JavaScript object literals, Toward Modularity, Creating Classes
load event, Ajax Progress
load() function, Adding a Bit of Context, CommonJS
loading
controllers after the document, Loading Controllers After the Document
data
including data inline, Including Data Inline
JSONP, JSONP
security with cross-domain requests, Security with Cross-Domain Requests
with Ajax, Loading Data with Ajax
local storage
about, Storing Data Locally
adapter, Custom Behavior
adding to ORMs, Adding Local Storage to Our ORM
logging level, The Console

M

MacRuby, Ichabod
manual testing, Unit Testing
matchers, Jasmine
Math.random() function, Adding ID Support
messages, sending and receiving, WebSockets
minification
about, Wrapping Up Modules
deployment, Minification
mixins, CSS extensions, Mixins
model ID, Collections
model property, Collections
Model.created() callback, Addressing References
models, Models and DataSubmitting New Records to the Server
about, The Model
adding ID support, Adding ID Support
adding local storage ORM, Adding Local Storage to Our ORM
addressing references, Addressing References
Backbone library, Models
binding, Binding Up Models
contact model in contacts manager in Spine libraries, Contact Model
flexible box model: CSS3, Flexible Box Model
loading data, Loading in DataSecurity with Cross-Domain Requests
including data inline, Including Data Inline
JSONP, JSONP
security with cross-domain requests, Security with Cross-Domain Requests
with Ajax, Loading Data with AjaxLoading Data with Ajax
MVC pattern and namespacing, MVC and Namespacing
ORMs, Building an ORMPersisting Records
populating ORMS, Populating Our ORM
Spine libraries, ModelsPersistence
storing data locally, Storing Data Locally
submitting new records to the server, Submitting New Records to the Server
Modernizr, Modernizr
modified time (mtime), Caching
modularity, MVC pattern and classes, Toward Modularity, Creating Classes
module pattern, Module Pattern
module transport format, Modules and the Browser
module() function, QUnit
modules
alternatives to, Module Alternatives
browser, Modules and the Browser
declaring with CommonJS, Declaring a Module
module loaders, Module Loaders
wrapping up, Wrapping Up Modules
mod_deflate, Gzip Compression
multiple attribute, File Inputs
Mustache, Templates
MVC pattern, Early DaysClass Libraries
about, What Is MVC?
adding inheritance to class libraries, Adding Inheritance to Our Class Library
adding methods to class libraries, Adding Methods to Our Class Library
adding private functions, Adding Private Functions
adding structure to applications, Adding Structure
class functions, Adding Functions to Classes
class inheritance using prototype, Class Inheritance Using Prototype
class libraries, Class Libraries
classes, Toward Modularity, Creating Classes
controlling scope in class libraries, Controlling Scope in Our Class Library
function invocation, Function Invocation
JavaScript history, Early Days
namespacing, MVC and Namespacing

N

namespacing
CommonJS initiative, Declaring a Module
custom events, Custom Events
importance of, Dependency Management
MVC pattern, MVC and Namespacing
namespace pollution, Module Pattern
variable definitions and global namespaces, Global Import
negating selectors in CSS3, Selector Negation
nested rules, CSS extensions, Nested Rules
network requests, Analyzing Network Requests
new operator, Toward Modularity, Creating Classes
Node.js, Node.js and Socket.IO, Via JavaScript
non-DOM events, Non-DOM EventsNon-DOM Events
nth-child, CSS3, Nth Child

O

object-oriented languages, JavaScript as, Adding Structure
Object-relational mappers (see ORMs)
Object.create() function, Prototypal Inheritance, Classes
objects
clipboardData object, Copying
dataTransfer object, Dragging, Dropping
event object, The Event Object, Delegating Events
FileReader object, Reading Files
JavaScript object literals, Toward Modularity, Creating Classes
jQuery.fn object, Extensions
JSON objects, Including Data Inline
localStorage and sessionStorage objects, Storing Data Locally
properties and namespacing, MVC and Namespacing
prototypical objects, Class Inheritance Using Prototype
onhashchange event, Controllers
onmessage, WebSockets
onopen event, WebSockets
operators
new operator, Toward Modularity, Creating Classes
var operator, Adding Private Functions
options.error() callback, Custom Behavior
options.success() callback, Custom Behavior
order, events, Event Ordering
originalEvent attribute, Dragging
ORMs (Object-relational mappers), Building an ORMPersisting Records
adding local storage, Adding Local Storage to Our ORM
adding ORM properties, Adding ORM Properties
persisting records, Persisting Records
populating, Populating Our ORM
prototypal inheritance, Prototypal Inheritance

P

Pagerank algorithm, Resources
pasting, Pasting
performance
deployment, Performance
perceived speed, Perceived Speed
persistence
records: ORMs, Persisting Records
Spine libraries’ models, Persistence
plug-ins
Adobe Flash, Storing Data Locally
Growl jQuery plug-in, Creating a Growl jQuery Plug-in
HJS plug-in, Class Libraries
jQuery plug-ins and custom events, Custom Events and jQuery Plug-Ins
jquery.browse.js plug-in, Custom Browse Buttons
jQuery.tmpl library, Templates
jquery.upload.js plug-in, Uploading Files
Selenium, Drivers
popstate events, Using the HTML5 History API
populating
collections: Backbone library, Populating Collections
ORMs, Populating Our ORM
post() function, Submitting New Records to the Server
prefixes, CSS3, Prefixes
preloading
data, Loading in Data
intelligent preloading, Perceived Speed
prepend() function, DOM Manipulation
prerendering HTML, Views and Templating
private functions, Adding Private Functions
profile, debugging, Profile and TimingProfile and Timing
progress event
about, Ajax Progress
Ajax, Ajax Progress
properties
adding ORM properties, Adding ORM Properties
adding to classes, Adding Methods to Our Class Library
bubbles event, The Event Object
classes, Class Libraries
clipboardData property, Pasting
defining classes, Class Libraries
el property, Controllers
event object, The Event Object
events property, Delegating Events
immutable properties, Adding Private Functions
keyboard events, The Event Object
model property, Collections
prototypical objects, Class Inheritance Using Prototype
Spine libraries, Extending Classes
url instance property, Syncing with the Server
prototypal inheritance
class inheritance using prototype, Class Inheritance Using Prototype
ORMs, Prototypal Inheritance
proxies
WebSockets, WebSockets
proxy() function, Controlling Scope in Our Class Library, Context Change, Abstracting into a Library, Context
Publish/Subscribe pattern, Non-DOM Events
PubSub
global events, Global Events
pattern, Real-Time Architecture
Pusher, Node.js and Socket.IO
pushState() and replaceState() history API, Controllers

Q

QUnit, QUnit

R

Rack, Less code, Via Rack
rack-modulr, Wrapping Up Modules
rackup command, Wrapping Up Modules
raw method, Including Data Inline
reading files, Reading Files
ready() function, Event Libraries
real-time Web, The Real-Time WebPerceived Speed
architecture, Real-Time Architecture
history, Real Time’s History
perceived speed, Perceived Speed
WebSockets, WebSocketsNode.js and Socket.IO
record feature, Profile and Timing
records
persisting records, Persisting Records
retrieving in Spine libraries’s models, Fetching Records
submitting new records to the server, Submitting New Records to the Server
references, addressing, Addressing References
refresh event, Populating Collections
refresh() function, Populating Collections
refreshElements(), Elements
registering callbacks to events, Adding a Bit of Context
relative expiration date, Caching
remove() function, Collections
removeEventListener(), Listening to Events
render pattern, The Render Pattern
render() function, Binding and Context
rendering
Backbone library views, Rendering Views
dynamically rendering views, Dynamically Rendering Views
templates inline, Template Storage
requests
network requests, Analyzing Network Requests
same origin policy, Loading Data with Ajax
security with cross-domain requests, Security with Cross-Domain Requests
require() function, CommonJSYabble
RequireJS, RequireJS
resources, deployment, Resources
return statements, new operator, Toward Modularity, Creating Classes
reventDefault() function, Canceling Events
rgb style, Colors
Rhino, CommonJS
rounding corners, CSS3, Rounded Corners
routes, Controllers
routing, RoutingUsing the HTML5 History API
Ajax crawling, Ajax Crawling
detecting hash changes, Detecting Hash Changes
HTML5 History API, Using the HTML5 History API
URL’s hash, Using the URL’s Hash
RPC script, WebSockets

S

Safari, Web Inspector, Web Inspector
same origin policy, Loading Data with Ajax
Sauce Labs, Distributed Testing
save() function, Models, Syncing with the Server
saveLocation(), Controllers
scope
class libraries, Controlling Scope in Our Class Library
context, Adding a Bit of Context
script tags
about, Dependency Management
scripts, performance, Performance
search() function, Controllers
security, cross-domain requests, Security with Cross-Domain Requests
selectors
CSS3, Selectors
jQuery, jQuery Primer
Selenium, Drivers
self local variable, Events
send() function, Uploading Files, WebSockets
server push, Real Time’s History
server-side applications, views, Views and Templating
server-side validation, Persistence
servers
submitting new records to, Submitting New Records to the Server
syncing with: Backbone library, Syncing with the ServerCustom Behavior
session storage, Storing Data Locally
set() function, Models and Attributes
setData() function, Dragging
setDragImage() function, Dragging
shadows
drop shadows in CSS3, Drop Shadows
text shadows in CSS3, Text Shadow
shortcuts, event types, Event Libraries
show:contact event, Contacts Controller
Sidebar controller in contacts manager in Spine libraries, Sidebar Controller
slice() function, Blobs and Slices
slices and blobs, Blobs and Slices
Socket.IO, Node.js and Socket.IO
speed, real-time Web, Perceived Speed
SpiderMonkey, CommonJS
Spine libraries, The Spine LibraryApp Controller
class implementation, Class Libraries
classes, Classes
context, Context
extending, Extending Classes
contacts manager, Building a Contacts ManagerApp Controller
App controller, App Controller
contact model, Contact Model
Contacts controller, Contacts Controller
Sidebar controller, Sidebar Controller
controllers, ControllersThe Element Pattern
controller events, Controller Events
delegating events, Delegating Events
element pattern, The Element Pattern
elements, Elements
global events, Global Events
render pattern, The Render Pattern
events, Events
models, ModelsPersistence
events, Model Events
fetching records, Fetching Records
persistence, Persistence
validation, Validation
setup, Setup
Spine.Events, Controller Events
Spine.List class, Sidebar Controller
splats, Controllers
Sprockets, Module Alternatives
SproutCore, The Backbone Library
state machines, controllers, State Machines
state, storing and controllers, Controllers and State
Stitch, Wrapping Up Modules
stopImmediatePropagation() function, Canceling Events
stopPropagation() function, Canceling Events
storage
local storage, Storing Data Locally, Adding Local Storage to Our ORM
templates, Template Storage
submitting new records to the server, Submitting New Records to the Server
syncing with the server: Backbone library, Syncing with the ServerCustom Behavior

T

Task.fetch(), Persistence
teardown function, Jasmine
teardown option, QUnit
templates, TemplatesTemplate Storage
about, Templates
helpers, Template Helpers
HTML, Building a To-Do List
prototypical objects as, Class Inheritance Using Prototype
storage, Template Storage
views, The View
testing, Testing and DebuggingProviding Support
(see also debugging)
about, Testing and Debugging
distributed testing, Distributed Testing
drivers, Drivers
headless testing, Headless TestingIchabod
Ichabod library, Ichabod
Zombie.js, Zombie
support, Providing Support
unit testing, Unit TestingJasmine
assertions, Assertions
Jasmine, JasmineJasmine
QUnit, QUnit
TestSwarm, Distributed Testing
text shadows, CSS3, Text Shadow
text() function, DOM Manipulation
this
context change, Events
function invocation, Function Invocation
this.input, Elements
timeEnd(), Profile and Timing
timing
debugging, Profile and TimingProfile and Timing
functions, Transitions
to-do lists, Backbone library, Building a To-Do ListBuilding a To-Do List
toggleClass(), Abstracting into a Library
toJSON() function, Rendering Views
transformations, CSS3, Transformations
transitionend, Transitions
transitions, CSS3, Transitions
trigger() function, Custom Events
Twitter, Ajax crawling, Ajax Crawling
type conversion
testing, Assertions

U

UIs, FSMs, State Machines
underscore (_), prefixing private properties, Adding Private Functions
underscore.js library, The Backbone Library
unit testing, Unit TestingJasmine
assertions, Assertions
Jasmine, JasmineJasmine
QUnit, QUnit
update() function, Addressing References
uploaders, jQuery drag-and-drop uploader, jQuery Drag and Drop UploaderUploading the File
uploadFile() function, Creating a Drop Area
uploading files, Uploading FilesAjax Progress
url instance property, Syncing with the Server
URLs, routing and URL’s hash, Using the URL’s Hash
User.extend(), Extending Classes
UX (user experience), Perceived Speed

V

V8 JavaScript engine, Zombie
validate() function, Models and Attributes
validation, Spine libraries’ models, Validation
values() function, Console Helpers
var operator, Adding Private Functions
variables
arguments variable, Function Invocation
CSS extensions, Variables
global variables and functions, The Model
interpolating, Templates
namespacing, MVC and Namespacing
variable definitions and global namespaces, Global Import
views
about, The View
Backbone library, Views
controllers, Accessing Views
dynamically rendering, Dynamically Rendering Views
Vows.js, Zombie

W

Watir, Drivers
Web Inspector, Web Inspector
web page for this book, How to Contact Us
Web-socket-js, WebSockets
WebKit, Copy and Paste
WebKitTransitionEvent, Transitions
WebSockets, WebSocketsNode.js and Socket.IO
whitelist
of domains, Security with Cross-Domain Requests
whitelisting attributes, On the Server Side
wildcards, Controllers
wrapping
extensions, Extensions
modules, Wrapping Up Modules

X

XDomainRequest, Loading Data with Ajax
XMLHttpRequest API, Uploading Files
XMLHttpRequest class, Loading Data with Ajax

Y

Yabble, Yabble
YSlow, Auditors
YUI Compressor, Minification

Z

Zepto.js, The Backbone Library
Zombie.js, Zombie