En nuestro artículo anterior sobre Introducción a la Programación Orientada a Objetos en JavaScript , hemos visto toda la terminología común de programación orientada a objetos y llegamos a saber cómo existen o no en JavaScript. En este artículo, los objetos se tratan en detalle.
Crear objetos
En JavaScript, los objetos se pueden crear utilizando dos metodologías diferentes, a saber, forma literal y forma construida.
- Forma literal: la forma literal utiliza la construcción de objetos literales que se pueden decir como una colección de pares clave-valor encerrados entre un par de llaves. La forma sintaxial se muestra a continuación.
var obj = { key1: value1, key2: value2, ... };
- Formulario construido: el formulario construido utiliza una función de constructor de objetos o la nueva palabra clave para crear un anuncio de objeto vacío y luego agrega propiedades al objeto una por una. Las formas sintaxiales se muestran a continuación.
- Función de constructor de objetos: en esta metodología, el usuario crea una función explícita para tomar los valores requeridos como parámetros y asignarlos como propiedades del objeto deseado.
function obj(value1, value2, ...) { this.key1 = value1; this.key2 = value2; ... }
- Uso de la palabra clave nueva: esta metodología utiliza la palabra clave nueva delante de cualquier método constructor o cualquier método constructor integrado (como objeto, fecha, string, etc.) y crea una nueva instancia del siguiente objeto montándolo en la memoria.
var obj = new Object(); obj.key1 = value1; obj.key2 = value2; ...
- Función de constructor de objetos: en esta metodología, el usuario crea una función explícita para tomar los valores requeridos como parámetros y asignarlos como propiedades del objeto deseado.
Diferencias entre el uso de objetos literales y la forma construida: tanto la forma construida como la forma literal dan como resultado la creación de exactamente el mismo tipo de objeto, es decir, el resultado final es el mismo para ambas metodologías. La única diferencia entre ambos es que los objetos literales pueden encargarse de varios pares clave-valor a la vez y, por lo tanto, es más conveniente mientras que, por otro lado, con los objetos de forma construida, debemos agregar las propiedades una por una en separado. declaraciones.
Nota: es muy poco común usar la forma construida sobre los objetos literales para crear objetos, por lo tanto, para cualquier ilustración adicional, usaremos los objetos literales en la mayoría de las ocasiones.
Objetos incorporados
JavaScript consta de un montón de objetos incorporados, la siguiente lista explora la mayoría de ellos. Aunque estos incorporados tienen la apariencia de ser tipos o clases reales como en cualquier otro OOP, en JavaScript son solo funciones que se pueden usar como constructores para crear objetos del subtipo particular.
- Cuerda
- Número
- booleano
- Objeto
- Función
- Formación
- Fecha
- RegExp
- Error
Ahora tomemos un ejemplo para diferenciar entre Objetos y Primitivos.
// Create string primitive. var strPrimitive = "GeeksforGeeks"; typeof strPrimitive; // "string" strPrimitive instanceof String; // false // Use the Built-in String Function as Constructor. var strObject = new String( "GeeksforGeeks" ); typeof strObject; // "object" strObject instanceof String; // true // inspect the object sub-type Object.prototype.toString.call( strObject ); // [object String]
En el ejemplo anterior, vimos que crear una primitiva de string no creó un objeto ni una instancia de String. Las primitivas son valores literales e inmutables, para realizar tareas como calcular la longitud o cambiar cualquier carácter en cualquier posición debemos usar el Objeto de tipo String. Pero JavaScript es un lenguaje dinámico y, afortunadamente para los desarrolladores, JavaScript obliga a una string primitiva a una clase String cada vez que una operación lo necesita. Cabe señalar que, debido a la coerción interna, se prefiere en gran medida utilizar primitivas tanto como sea posible en lugar de objetos .
Contenido de los objetos
Los objetos de JavaScript constan de un conjunto de pares clave-valor, que se conocen como propiedades. Todas las propiedades se nombran en objetos de JavaScript y la parte clave representa el nombre de la propiedad, mientras que la parte del valor representa el valor de la propiedad. El valor de la propiedad puede ser del tipo de datos primitivo o un objeto o incluso una función. La propiedad también puede ser accesible globalmente a pesar de ser propiedad de un objeto. La sintaxis general para definir una propiedad de objeto es la que se muestra a continuación,
objectName.objectProperty = propertyValue;
El siguiente programa aclarará los conceptos que discutimos anteriormente,
var myObj = { // Integer Property. int_prop: 5, // String Property. str_prop: "GeeksforGeeks", // Object Property (Date). obj_prop: new Date(), // Object Property. inner_obj: { int_prop: 6 }, // Function Property. func_prop: function(){ console.log("Welcome to GeeksforGeeks!"); } }; console.log(myObj.int_prop); console.log(myObj.str_prop); console.log(myObj.obj_prop.toLocaleTimeString()); console.log(myObj.inner_obj.int_prop); myObj.func_prop();
Producción:
5 GeeksforGeeks 5:47:55 PM 6 Welcome to GeeksforGeeks!
Según las convenciones, las funciones asociadas con un objeto se conocen como métodos . Esto se considera una pequeña diferencia entre una función y un método. Una función es una secuencia independiente de un conjunto de declaraciones, mientras que un método está asociado a un objeto y generalmente se hace referencia a él con la palabra clave this .
Definición de variables globales para que sean propiedad de los objetos: esto se realiza principalmente en métodos, el proceso es bastante simple, definiremos nuestra función como estamos acostumbrados, y al definir la función para que sea un miembro de las propiedades del objeto, simplemente le daremos la nombre de la función como el valor de una tecla. Veámoslo en el ejemplo dado a continuación.
// Define Function Explicitly. function toGreet() { console.log("Hello There!"); } var myObj = { // Mention Function-Name as Value. greet: toGreet, // Define Function implicitly. byWhom: function(){ console.log(" - GeeksforGeeks.org"); } } myObj.greet(); myObj.byWhom();
Producción:
Hello There! - GeeksforGeeks.org
Nota: La palabra clave ‘with’ se puede usar para hacer referencia a las propiedades de un objeto. El objeto especificado como argumento de with se convierte en el objeto predeterminado durante el bloque que sigue. Por lo general, se recomienda que los desarrolladores no lo utilicen. El uso de with no está permitido en el modo estricto de JavaScript.
Puntos importantes
- Los valores de fecha solo se pueden crear con su forma de objeto construido, ya que no tienen forma literal.
- Los objetos, las arrays, las funciones y las expresiones regulares (expresiones regulares) son todos objetos, independientemente de sus metodologías de creación, es decir, si se utilizó la forma literal o construida para crearlos.
- La forma construida puede ofrecer más personalización durante la creación de un objeto, esta es la única ventaja sobre el uso de la forma literal.
Con esto, podemos terminar esta discusión sobre Objetos en JavaScript y podemos comenzar a caminar por el Camino de definir y describir temas importantes relacionados con los objetos.