Is there a JavaScript Object that is not a function?
javascript: x=y=z=Object; alert([window.navigator.userAgent,x,y,z].join("\n\n"))
(There was a comment that x,y,z are merely references in which case Object is also merely a reference to function Object(){ ... } because Object's value is assigned to x and they are the "same". As "proof"
javascript:x=Object;x.p=43;alert([x==Object,x===Object,x.p,Object.p])
displays
true,true,43,43
Given function Thing(){} does x=new Thing() make x an object or a reference to one? What about new Thing() and Thing? Or y in y=x=new Thing() or y=x=Thing? What if Thing=function(){}? The distinction is moot. "Everything" (or is it?) is called-by-reference but call-by-name can be coerced by evaluating strings. So ...)
javascript:
void function(x,y,z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n") )
}(Object,Object,Object)
or
javascript:
void function(x){ (function (y){ (function (z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n") )
})(y) })(x) }(Object)
(well not quite moot - the function's values must be coerced using (...) or void. The nuances of (...) are subtle:
javascript: /* 43.p gives a runtime error but not ... */
alert([ (43).p=34, 43["q"]=17, (x=43).z="hmmm" ]);
alert([ 43["p"], (43).z, x.p, x["z"], x]);
displays 34,17,hmmm and ,,,,43
)
or even an array of Objects
javascript:alert([window.navigator.userAgent,Object,Object,Object].join("\n\n"))
gives:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3
function Object() { [native code] }
function Object() { [native code] }
function Object() { [native code] }
There are many objects that are not Object.
As pointed out in one of the answers, Object may not be itself IF it is modified.
Danger! Danger! Will Robinson!
x=y=z=Object=null; alert([window.navigator.userAgent,Object,x,y,z].join("\n\n"));
references
- Object and Function are quite confusing
- Difference between a constructor and an Object
- Is Function really an Object
- Is JavaScript function a "function" or an "object" or both?
- Every Object is a function and every function is Object - Which is Correct?
- Why in JavaScript is a function considered both a constructor and an object?
Objectisfunction Object() { [native code] }viajavascript:alert(Object)and so ...