2012-05-07 17 views
7

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 tengan Function.prototype (entonces, no call o apply). ¿Este es siempre el caso/comportamiento específico?

  • Las "funciones no constructoras" parecen tener principalmente Function.prototype con la excepción de Function.prototype sí mismo. ¿Hay otros casos que tengan Object.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 y Function.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.

+0

Usted y sus preguntas terminología de nuevo! :) – BoltClock

+0

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 *. –

+1

[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

Respuesta

0

No creo que hay un nombramiento oficial de lo que estás pidiendo, pero por lo general así es como la gente llama todas esas funciones en cualquier lenguaje de programación:

  • función regular: function
  • Constructor: constructor
  • no constructor: method
  • no exigible: interface (en el caso de JS, esto se refiere a los objetos nativos a un nivel inferior)
1

Creo que lo que está recogiendo aquí son los matices entre los objetos nativos integrados en EcmaScript y los objetos host, creados y suministrados por el desarrollador.

El mapa de "Funciones normales" para alojar objetos, es decir funciones creadas con JS y "funciones de constructor único", funciones no constructor "y" funciones no llamables "mapean a objetos nativos incorporados en el lenguaje en un nivel inferior.

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

Cuestiones relacionadas