¿Hay un objeto JavaScript que no sea una función?¿Es cada objeto de JavaScript una función?
javascript: x=y=z=Object; alert([window.navigator.userAgent,x,y,z].join("\n\n"))
(Hubo un comment que x
, y
, z
no son más que referencias en cuyo caso Object
también es simplemente una referencia a function Object(){ ... }
porque el valor Object
's se asigna a x
y son la 'misma'. Como "prueba"
javascript:x=Object;x.p=43;alert([x==Object,x===Object,x.p,Object.p])
pantallas
true,true,43,43
Dado function Thing(){}
¿x=new Thing()
hace x
un objeto o una referencia a uno? ¿Qué hay de new Thing()
y Thing
? O y
en y=x=new Thing()
o y=x=Thing
? ¿Qué pasa si Thing=function(){}
? La distinción es discutible. "Todo" (¿o lo es?) Se llama por referencia, pero la llamada por nombre se puede forzar mediante la evaluación de cadenas. . Así que ...)
javascript:
void function(x,y,z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n"))
}(Object,Object,Object)
o
javascript:
void function(x){ (function (y){ (function (z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n"))
})(y) })(x) }(Object)
(así no es discutible - los valores function
's deben ser obligados usando (...)
o void
Los matices de (...)
son sutiles:
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]);
pantallas 34,17,hmmm
y ,,,,43
)
o incluso una matriz de objetos
javascript:alert([window.navigator.userAgent,Object,Object,Object].join("\n\n"))
da:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv: 1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucidez) Firefox/3.6.3
función Object() { [código nativo]}
función Object() { [código nativo]}
función Object() { [código nativo]}
Hay muchos objetos que no son objeto.
Como se señala en una de las answers, a objeto no puede ser a sí mismo si se modifica.
¡Peligro! ¡Peligro! Will Robinson!
x=y=z=Object=null; alert([window.navigator.userAgent,Object,x,y,z].join("\n\n"));
referencias
- 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?
una función es un objeto – Ibu
@Ibu ... pero no todos los objetos son funciones ;-) –
@pst, gracias por terminar mi frase – Ibu