Есть ли объект JavaScript, который не является функцией?
javascript: x=y=z=Object; alert([window.navigator.userAgent,x,y,z].join("\n\n"))
(Был комментарий , что x
, y
, z
являются просто ссылками вэтот случай Object
также является просто ссылкой на function Object(){ ... }
, потому что значение Object
присвоено x
, и они являются "одинаковыми". Как и "доказательство"
javascript:x=Object;x.p=43;alert([x==Object,x===Object,x.p,Object.p])
отображает
true,true,43,43
Учитывая function Thing(){}
делает x=new Thing()
делает x
объектом или ссылкой на него? Как насчет new Thing()
и Thing
? Или y
в y=x=new Thing()
или y=x=Thing
«Что делать, если Thing=function(){}
?» Различие является спорным. «Все» (или оно?) Вызывается по ссылке, но вызов по имени может быть приведен в исполнение путем вычисления строк. Итак ...)
javascript:
void function(x,y,z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n") )
}(Object,Object,Object)
или
javascript:
void function(x){ (function (y){ (function (z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n") )
})(y) })(x) }(Object)
(ну, не совсем спорный - значения function
должны быть приведены с помощью (...)
или void
. Нюансы (...)
тонкие:
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]);
отображает 34,17,hmmm
и ,,,,43
)
или даже массив объектов
javascript:alert([window.navigator.userAgent,Object,Object,Object].join("\n\n"))
дает:
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 () {[собственный код]}
function Object () {[собственный код]}
functionObject () {[собственный код]}
Есть много объектов, которые не являются объектами.
Как указано в одном из ответов , Объект не может быть сам по себе, ЕСЛИ он изменен.
Опасно!Опасность!Уилл Робинсон!
x=y=z=Object=null; alert([window.navigator.userAgent,Object,x,y,z].join("\n\n"));
ссылки