Tutorial Appendices

Tutorial 15 - User-Defined Objects

The JavaScript tutorial appendix is a synopsis of important objects, methods, properties, functions ,events and reserved words. It includes a brief history of the JavaScript language.The terms used will help you access an appropriate reference book that explains in detail what the term means. Some useful references are:

  • JavaScript Unleashed, Sams ['03]
  • JavaScript Bible, IDG Books ['99]
  • JavaScript - The Definitive Guide, O'Reilly ['01]
  • Pure JavaScript, Sams ['99]

JavaScript Reserved Words

Reserved words are words with a special purpose. These words cannot be used as variable names.

abstract  boolean    break       byte      case          catch      char
class     const      continue    debugger  default       delete     do
double    else       enum        export    extends       false      final
finally   float      for         function  goto          if         implements
import    in         instanceof  int       interface     long       native
new       null       package     private   protected     public     return
short     static     super       switch    synchronized  this       throw
throws    transient  true        try       typeof        undefined  var
void      volatile   while       with

To avoid unnecessary debugging problems do not use any property or method name as a variable name. Also avoid using a case variant even when it is legal (eg. do not use instanceOf).

Client-Side Objects, Methods & Properties

Client-side objects are basic objects tied to a particular browser. This may cause some inconsistencies in syntax or use as browser versions change. Be aware that differences exist and always test your code. The client-side objects are Document, Form, History, Location, Navigator and Window.

  • Document Object - Primary Output
    • content properties - anchors[], applets[], embeds[], forms[], images[], links [], plugins[]
    • display properties - alinkColor, bgColor, fgColor, linkColor, vlinkColor
    • information properties - cookie, domain, lastModified, location, mimeTypes, referrer, title, URL
    • methods - open(), write(), writeln()
  • Form Objects - Primary Input
    • form properties - name, target, action, method, encoding, elements, length
    • form methods - submit(), reset()
    • input, textarea and select methods - focus(), blur(), select()
    • button, hidden, reset, and submit object properties - name, value, type
    • checkbox properties - name, value, type, checked, default checked
    • password properties - name, value, type, default value
    • radio button properties - name, value, type, checked, default checked, length
    • select properties - name, value, type, length, options, defaultSelected, index, selected, selectedIndex
    • text, textarea properties - name, value, defaultvalue
  • History Object - Access the browser's history file
    • properties - length
    • methods - back(), forward(), go()
  • Location Object
    • properties - hash, hostname, href, pathname, port, protocol, search
    • methods - reload(), replace()
  • Navigator Object - Root of all Objects
    • properties - appCodeName, appName, appVersion, userAgent
    • methods - javaEnabled()
  • Window Object
    • contained objects -
      • Screen Object
      • properties - availHeight, availLeft, availTop, availWidth, colorDepth, height, pixelDepth, width
    • properties - defaultStatus, frames, length, name, opener, parent, self, status, top, window
    • methods - alert(), blur(), clearInterval(), clearTimeout(), close(), confirm(), focus(), open(), print(), prompt(), scroll(), setInterval(), setTimeout(), timeoutID()

ECMA Core Objects, Methods & Properties

ECMA is a standards committee which defines specific core objects (or internal constructs) to help a programmer. Some are used to access operating system functions. Others are used to perform data and string manipulations. The ECMA objects are Array, Boolean, Date, Error, Function, Global, Math, Number, Object, RegExp and String

  • Array Object
    • properties - constructor, length, prototype
    • methods - concat(), join(), pop(), push(), reverse(), shift(), slice(), sort(), splice(), toLocaleString(), toString(), unshift(), valueOf()
  • Boolean Object
    • properties - constructor, prototype
    • methods - toString(), valueOf()
  • Date Object
    • properties - constructor, prototype
    • methods - getDate(), getDay(), getFullYear(), getHours(), getMilliseconds(), getMinutes(), getMonth(), getSeconds(), getTime(), getTimeZoneOffset(), getUTCDate(), getUTCDay(), getUTCFullYear(), getUTCHours(), getUTCMilliseconds(), getUTCMinutes(), getUTCMonth(), getUTCSeconds(), getVarDate(), getYear(), parse(), setDate(), setFullYear(), setHours(), setMilliseconds(), setMinutes(), setMonth(), setSeconds(), setTime(), setUTCDate(), setUTCFullYear(), setUTCHours(), setUTCMilliseconds(), setUTCMinutes(), setUTCMonth(), setUTCSeconds(), setUTCTime(), setUTCYear(), setYear(), toLocaleString(), toUTCString(), toString(), UTC(), valueOf()
  • Error Object
    • properties - description, number
    • methods -
  • Function Object
    • properties - arguments[], caller, constructor, prototype
    • methods - toString(), valueOf()
  • Global Object
    • properties - Infinity, NaN, undefined
    • methods - escape(), eval(), isFinite(), isNaN(), parseFloat(), parseInt(), unescape()
  • Math Object
    • properties - E, LN10, LN2, LOG10E, LOG2E, PI, SQRT2, SQRT1_2
    • methods - abs(), acos(), asin(), atan(), atan2(), ceil(), cos(), exp(), floor(), log(), max(), min(), pow(), random(), round(), sin(), sqrt(), tan()
  • Number Object
    • properties - MAX_VALUE, MIN_VALUE, NaN, NEGATIVE _INFINITY, POSITIVE_INFINITY, constructor, prototype
    • methods - toLocaleString(), toString(), valueOf()
  • Object Object
    • properties - constructor, prototype
    • methods - toLocaleString(), toString(), valueOf()
  • RegExp Object
    • properties - $1 - $9, index, input, lastIndex, lastMatch, lastParen, leftContext, rightContext
  • String Object
    • properties - constructor, length, prototype
    • display methods - anchor(), big(), blink(), bold(), fixed(), fontcolor(), fontsize(), italics(), small(), strike(), sub(), sup()
    • manipulation methods - charAt(), charCodeAt(), concat(), fromCharCode(), indexOf(), lastIndexOf(), link(), match(), replace(), search(), slice(), split(), substr(), substring(), toLowerCase(), toUpperCase(), toString(), valueOf()

JavaScript Events and Event Handlers

JavaScript events are external stimulae or actions by a user or by the operating system that cause internal procedures to run which modify the 'properties' of 'objects'. Clicking the mouse, pressing the [Enter] key, and moving the cursor are some of the 'events' that start the ball rolling. Event handlers are the specific methods for reacting to an event.

System Event Handlers:

Event Name Handler Executes When
onError [window, image] window or image fails to load.
onLoad [window, frame, image] window, complete frame or image(s) finishes loading.
onUnload [window, frame] window or all windows in a frame have been exited.

User Event Handlers:

NOTE: When used as an attribute, an event handler must be typed in lowercase only (eg. onclick) to meet XHTML specifications! Most, but not all of the following user event handlers can be included as form control attributes.

Event Name Handler Executes When
onAbort [image] image load has been abandoned by hitting the STOP icon.
onBlur [window, frame, select, text, textarea] focus is lost (ie. changed or blurred) to a new element.
onChange [select, text, textarea] last element has been changed before focus change.
onClick [clickable form element] user left mouse clicks or clicks on form element but can be stopped if the executing procedure (such as validation) returns a false signal.
onContextmenu right mouse button clicked.
onDblclick mouse button is double-clicked.
onFocus [window, frame, select, text, textarea] object gains focus. aka anti-blur!
onHelp F1 button pressed. Used to override browser Help.
onKeydown alphanumeric key is pressed.
onKeypress alphanumeric key is fully pressed/released.
onKeyup alphanumeric key is released.
onMousedown either mouse button is clicked.
onMousemove mouse is moved.
onMouseOut [link, area] cursor leaves a link or area.
onMouseOver [link, area] cursor enters a link or area.
onReset [form] the reset button is clicked.
onResize a window is resized.
onSelect [text, textarea] some text is highlighted in either of these form boxes.
onStop GUI stop button is pressed or user leaves page.
onSubmit [form] Executes after a return key is pressed or a submit button is clicked but allows a bailout similar to the onclick event. Failure in a validation routine is the most common reason for bailout.

Built-In Functions

In order to help the programmer, JavaScript includes several useful built-in functions. Their names and usage follows:

escape() Many special characters cause problems when submitting information to a 0CGI server. These characters include $ # ! spaces and tabs. An example of a safely encoded string is coded = escape('& '). [returns "%26%20"]. See also unescape.
eval() Evaluates a string and returns a numeric value. An example is eval(x) + eval(y); If x and y are strings '1' and '2' the result is three. Without the eval function the value would be 12!
isFinite() Tests whether the variable is a finite number. Returns false if contents is not a number or is infinite. An example of usage is flag = isFinite(var_name);
isNaN() Tests whether the variable is not a number. Returns true if contents is not a decimal based number. An example of usage is flag = isNaNum(var_name);
Number() Converts the object argument to a number representing the object's value. If the value cannot be represented by a legitimate number, the "Not-a-Number" value, NaN is returned.
Note the inconsistency in case!!
parseFloat() Turns a string into a floating-point number. If the first character can't be converted the result is NaN. Otherwise the conversion stops at first character that can't be converted. The function is decimal base only! an example of usage is n = parseFloat('23.45');
parseInt() Turns a string into an integer number. If the first character can't be converted the result is NaN. Otherwise the conversion stops at first character that can't be converted. If a second parameter is included, the numeric base can be binary, octal, decimal or hexadecimal. An example is n = parseInt('55'); which places the number 55 into the variable n.
unescape() Recovers an escaped string. An example is decoded = unescape('%26%20') [returns "& "].


new Creates a copy or instance of an object for use or modification within a program. For example now = new Date; creates a Date object called now that can be affected by all the Date properties and methods. Technically new is an operator but it works very much like a function!
this A shorthand convention to allow working with the current object method without naming it. This is used to save retyping a method name.
with A shorthand convention to allow working with the current object without naming it. This is used to save retyping a long object name. An example is:

with (document) {
   writeln(lastmodified);
   writeln(location);
   writeln(title);
   }

A Brief History of JavaScript

Everything has a history and often knowing that history gives insight into why things are done the way they are and what issued were solved and what were missed or created. This topic attempts to reveal the evolution of JavaScript.

Originally browsers only had one method of interactivity: forms submitted to other sites. What was desperately required was interactivity within the client browser itself. Netscape created a language called LiveScript which was interpreted and provided the required functionality for internal utilities and interaction. LiveScript was rebranded as JavaScript to gain from the good publicity that Java was getting. Its only commonality with Java is that both are OOP languages that use C syntax as a starting point.

Successive versions have added functionality in response to user demand. Image support, arrays, and plug-ins are examples of these additions. MicroSoft implemented its version as JScript but unfortunately often did things differently or included features not implemented in JavaScript. This was part of the browser wars and caused much grief for program authors.

Finally in 1996, developers had had enough and asked for standards! Unfortunately several standards group accepted the challenge. ECMA was the most successful and now ECMAScript is available on most browsers. However, ECMASCript is restricted to defining the core language. The browser interface is standardized through the DOM recommendation of w3.org. DOM also covers other languages that must interface with a browser, not just JavaScript.

Tutorial 15 - User-Defined Objects

Copyright (c) 2005 by John W. M. Russell