From ECMA spec 1 > ECMAScript does not contain proper classes such as those in C++, > Smalltalk, or Java, but rather, supports constructors which create > objects by executing code that allocates storage for the objects and > initializes all or part of them by assigning initial values to their > properties. All functions including constructors are objects, but not > all objects are constructors. I don't see how it could be any more clear!!! `</sarcasm>` Further down we see: > Prototype A prototype is an object used to implement structure, state, > and behavior inheritance in ECMAScript. When a constructor creates an > object, that object implicitly references the constructor’s associated > prototype for the purpose of resolving property references. The > constructor’s associated prototype can be referenced by the program > expression constructor.prototype, and properties added to an object’s > prototype are shared, through inheritance, by all objects sharing the > prototype. So we can see that a prototype is an object, but not nesecerally a function object.