Clarification:
"JavaScript constructor" should be more properly be written as "javascript constructor" to emphasize that the constructors considered are not just the native JavaScript language constructors, such as Object, Array, Function, etc. but also others, extrinsic to the JavaScript language definition but intrinsic to a browser, such as XMLHttpRequest
, The word "JavaScript" is meant to indicate these constructors are expressed and accessed using JavaScript.
some references:
- Using a Constructor Function in Working with Objects - MDN Docs
- "
constructor
Specifies the function that creates an object's prototype"
in Object - MDN Docs - an example: "... calling the
Worker()
constructor ..."
Worker - MDN Docs - What are the predefined primitive constructors?
- Where are constructors such as, `new Image()` and `new Option()`, documented?
- Where is the Documentation for all of the Javascript HTML Element Constructors?
Rhetorically, there are references to constructor functions but NOT constructor objects!
(Facetiously, this is because Objects ARE functions, and Functions are objects!
Why in JavaScript is a function considered both a constructor and an object?
More specifically, objects, or is that obj-eggs?, ARE, ignoring literal instances, instantiations of functions and functions are Object instances of Functions. It is arguable that functions are fundamental to the existence of objects as evidenced by the fact
7. Functions
precedes
8. Working with Objects
in the MDN docs JavaScript Guide. That section 8, I object!, provides the details needed to create objects using constructors and function instantiations!)
Why are constructors that interface the DOM not functions?
javascript:
alert([
"using browser environment: \n"+window.navigator.userAgent,
Option, Image, Audio,
Storage, XMLHttpRequest, Worker, FileReader,
] . join("\n\n"));
shows us:
using browser environment:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3[object Option]
[object Image]
[object Audio]
[object Storage]
[object XMLHttpRequest]
[object Worker]
[object FileReader]
but ...
javascript:
alert([
XPCNativeWrapper,
].join("\n\n"));
(which produces
function XPCNativeWrapper() { [native code] }
)
and JavaScript language constructors ARE functions.
javascript:
alert([
"using browser environment: \n"+window.navigator.userAgent,
Array, Boolean, Date, Function,
Number, Object, RegExp, String,
Error, Iterator,
].join("\n\n"));
gives us:
using browser environment:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3function Array() { [native code] }
function Boolean() { [native code] }
function Date() { [native code] }
function Function() { [native code] }
function Number() { [native code] }
function Object() { [native code] }
function RegExp() { [native code] }
function String() { [native code] }
function Error() { [native code] }
function Iterator() { [native code] }