En una pregunta reciente , recibí sugerencias para hablar, entre otras cosas, sobre el aspecto de JavaScript donde las funciones son objetos de "primera clase". ¿Qué significa la "primera clase" en este contexto, a diferencia de otros objetos?
EDITAR (Jörg W Mittag): Duplicado exacto: "¿Qué es una construcción de programación de primera clase?"
javascript
ProfK
fuente
fuente
Respuestas:
Para citar Wikipedia :
Esta página también lo ilustra maravillosamente:
También lea el comentario de TrayMan, interesante ...
fuente
La noción de "funciones de primera clase" en un lenguaje de programación fue introducida por el científico informático británico Christopher Strachey en la década de 1960. La formulación más famosa de este principio se encuentra probablemente en Estructura e interpretación de programas de computadora por Gerald Jay Sussman y Harry Abelson:
Básicamente, significa que puede hacer con funciones todo lo que puede hacer con todos los demás elementos en el lenguaje de programación. Así, en el caso de JavaScript, que significa que todo lo que puede hacer con un entero, una cadena, una matriz o cualquier otro tipo de objeto, puede también ver con las funciones.
fuente
Aprobación más completa de la formulación de Strachey-Sussman-Abelson. Entonces, si su idioma admite tal construcción, entonces tiene una función como lenguaje de primera clase :)
En resumen, cualquier cosa es un objeto de primera clase si actúa en el lenguaje como un tipo de objeto de manipulación de estado o tipo de objeto. Simplemente algo en lo que puede operar y pasar declaraciones y evaluarlas en expresiones al mismo tiempo. O incluso más breve: cuando puede pensar en una función como un objeto que puede invocarse adicionalmente.
fuente
Las funciones de JavaScript son funciones de primera clase, lo que significa que las funciones y los objetos se tratan como lo mismo. Las funciones se pueden almacenar como una variable dentro de un objeto o una matriz, así como se puede pasar como un argumento o ser devuelto por otra función. Eso hace que la función sea "ciudadanos de primera clase en JavaScript"
JavaScript utiliza la sintaxis de notación literal, lo que dificulta comprender completamente el hecho de que en JavaScript las funciones son objetos.
Por ejemplo..
ambas declinaciones son equivalentes. Al usar
new
, estamos llamando a la función constructora de un objeto. También mediante el uso de{}
(acceso directo de JavaScript llamado literales) estamos llamando a la función de construcción de un objeto.{}
es solo una representación más corta para crear instancias del constructor.La mayoría de los idiomas usan
new
palabras clave para crear un objeto, por lo tanto, creemos un objeto JavaScript.Como puede ver, creamos una función de nombre de objeto .
Crear la misma función de nombre de objeto usando la expresión de función de JavaScript.
Aquí vamos, acabamos de crear una función de nombre de objeto.
fuente
En javascript las funciones son objetos de primera clase porque puede hacer mucho más de lo que pueden hacer los objetos.
Function instanceof Object //returns true
Al igual que un objeto, una función puede tener propiedades y puede tener un enlace a su función constructora.
fuente
Prueba simple Si puede hacer esto en su idioma (Python como ejemplo):
Su lenguaje trata las funciones como objetos de primera clase.
fuente
Significa que las funciones son objetos, con un tipo y un comportamiento. Se pueden construir dinámicamente, pasar como cualquier otro objeto, y el hecho de que se les pueda llamar es parte de su interfaz.
fuente
Significa que la función en realidad hereda de Object. Para que pueda pasarlo y trabajar con él como con cualquier otro objeto.
Sin embargo, en c # debe abstenerse de delegar o reflexionar para jugar con las funciones. (Esto mejoró mucho recientemente con expresiones lambda)
fuente
La definición en el sitio de Mozilla es concisa y clara. Según ellos
Y
fuente
Supongo que cuando algo es de primera clase en un idioma, significa que es compatible con su sintaxis en lugar de una biblioteca o azúcar sintáctico. por ejemplo, las clases en C no son de primera clase
fuente
Simple en JavaScript, las funciones son objetos de primera clase, es decir, las funciones son del tipo Objeto y se pueden usar de manera de primera clase como cualquier otro objeto (String, Array, Number, etc.) ya que en realidad son objetos sí mismos. Pueden "almacenarse en variables, pasarse como argumentos a funciones, crearse dentro de funciones y devolverse de funciones
fuente