Parece que hay varios "grupos" diferentes de cosas parecidas a funciones en JavaScript. Aquí están mis nombres inventados por ellos:Terminología para diferentes tipos de funciones
"funciones regulares": Estos son exigibles con parens y con
new
. La mayoría de las funciones entran en esta categoría."Funciones de solo constructor": solo se pueden llamar con
new
. Por ejemplo,Image
,DOMParser
, etc."funciones no constructor": Estos son exigible con parens, pero no con
new
. Por ejemplo,Math.round
,Function.prototype
."Funciones no recuperables": estas funciones no se pueden llamar en absoluto. Por ejemplo,
window.constructor
,Document
,NodeList
, etc.
¿Cuáles son los nombres propios para estos diferentes grupos de funciones?
También estoy tratando de averiguar si el que "grupo" a la función está en puede determinarse en función de si su [[Prototype]]
(__proto__
) propiedad se establece en Function.prototype
.
"La mayoría de las funciones regulares" tendrán
Function.prototype
, pero podría ser eliminado utilizando no estándar__proto__
.La mayoría de las "funciones de solo constructor" tienen
Object.prototype
. No puedo encontrar ningún caso donde tenganFunction.prototype
(entonces, nocall
oapply
). ¿Este es siempre el caso/comportamiento específico?Las "funciones no constructoras" parecen tener principalmente
Function.prototype
con la excepción deFunction.prototype
sí mismo. ¿Hay otros casos que tenganObject.prototype
?Las "funciones no llamables" parecen tener siempre
Object.prototype
. Es ese el caso?
voy a responder a algunas respuestas aquí:
función regular:
function
Constructor:constructor
no constructor:method
no exigible:interface
Esto no es realmente lo que estoy buscando. "función" y "constructor" son, por supuesto, correctos de una manera general, pero estoy buscando algo más específico ("función no constructor", etc.).
"método" no es mejor que la "función" en la que le dice que no puede ser llamada con new
y constructor
no consigue el punto a través de que puede única ser llamada con new
.
En muchos casos, las funciones no se puede llamar sólo son accesibles desde la propiedad constructor
de un objeto host. Creo que más de estos sería más exactamente llamado "constructores" de "interfaces".
[cosas acerca del sistema principal objetos vs objetos nativos]
Esto es algo así en el camino correcto. Tomando this question (y la respuesta aceptada, y sus comentarios) en consideración, parece haber algún desacuerdo o confusión sobre si las funciones definidas por el usuario son objetos host o nativos.
Para evitar eso, llamemos a las funciones definidas por el usuario UDF, y no nos preocupemos si son host o nativas. Así que tenemos UDF, objetos host y objetos nativos.
"funciones regulares"
Cada UDF
objetos nativos como
Object
,String
, etc.Host objetos como
window.toString
(probado en Chrome 18).
"Las funciones constructoras de sólo"
No hay objetos de origen?
Objetos host como
DOMParser
,Image
.
"Funciones no constructor"
objetos nativos como
Math.round
yFunction.prototype
.Objetos host como
DOMParser#parseFromString
.
"no se puede llamar funciones"
No hay objetos de origen?
Objetos host como
NodeList
,DocumentFragment
.
lo que parece que podría haber una conexión entre objetos host y funciones del constructor de sólo/no se puede llamar, pero no parece huésped contra nativa para aplicar a los no-constructor y las funciones regulares.
Usted y sus preguntas terminología de nuevo! :) – BoltClock
Je, que me ha estado molestando por días esta vez. me pregunto si estoy sólo que componen categorías artificiales donde no las hay, pero quiero llamarlo * algo *. –
[Aquí] (https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript) es una buena introducción a JavaScr orientado a objetos ipt, que debería responder a tu pregunta. – sp00m