Objeto()

Usando la función constructora Object () incorporada, podemos crear objetos genéricos vacíos sobre la marcha. De hecho, si recuerda el principio del Capítulo 1, esto es exactamente lo que hicimos al crear el objeto cody. Permite recrear el objeto cody..

Muestra: sample69.html

 

Aquí, todo lo que estamos haciendo es usar el Objeto() Función constructora para crear un objeto genérico llamado cody. Puedes pensar en el Objeto() El constructor es un cortador de cookies para crear objetos vacíos que no tienen propiedades o métodos predefinidos (excepto, por supuesto, los heredados de la cadena del prototipo).

Si no es obvio, el Objeto() El constructor es un objeto en sí mismo. Es decir, la función constructora se basa en un objeto creado a partir de la Función constructor. Esto puede ser confuso. Solo recuerda que como el Formación constructor, el Objeto El constructor simplemente escupe objetos en blanco. Y sí, puedes crear todos los objetos vacíos que quieras. Sin embargo, crear un objeto vacío como cody es muy diferente a crear su propia función constructora con propiedades predefinidas. Asegúrese de comprender que cody es solo un objeto vacío basado en el Objeto() constructor. Para aprovechar realmente el poder de JavaScript, tendrá que aprender no solo cómo crear contenedores de objetos vacíos desde Objeto(), sino también cómo construir su propia "clase" de objetos (Persona()) como el Objeto() la propia función constructora.


Objeto() Parámetros

los Objeto() La función constructora toma un parámetro opcional. Ese parámetro es el valor que le gustaría crear. Si no proporciona ningún parámetro, entonces un nulo o indefinido se asumirá el valor.

Muestra: sample70.html

 

Si un valor además nulo o indefinido se pasa a la Objeto constructor, el valor pasado será creado como un objeto. Entonces, teóricamente, podemos usar el Objeto() constructor para crear cualquiera de los otros objetos nativos que tienen un constructor. En el siguiente ejemplo, hago precisamente eso..

Muestra: sample71.html

 

Objeto() Propiedades y metodos

los Objeto() el objeto tiene las siguientes propiedades (sin incluir propiedades y métodos heredados):

Propiedades (Objeto.prototipo;):

  • prototipo

Objeto() Propiedades y métodos de instancia

Objeto() las instancias de objetos tienen las siguientes propiedades y métodos (no incluyen propiedades y métodos heredados):

Propiedades de instancia (var myObject = ; myObject.constructor;):

  • constructor

Métodos de instancia (var myObject = ; myObject.toString ();):

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • Encadenar()
  • valor de()

La cadena del prototipo termina con Objeto.prototipo, y por lo tanto todas las propiedades y métodos de Objeto() Son heredados por todos los objetos de JavaScript..


Creando Objeto() Objetos usando "objetos literales"

Crear un "objeto literal" implica crear una instancia de un objeto con o sin propiedades utilizando llaves (var cody = ;). ¿Recuerda al principio del Capítulo 1 cuando creamos el objeto cody de una sola vez y luego le dimos las propiedades del objeto cody usando notación de puntos? Vamos a hacer eso otra vez.

Muestra: sample72.html

 

Observe en el código que la creación del cody Objeto y sus propiedades tomaron cinco declaraciones. Usando el objeto de notación literal podemos expresar lo mismo. cody objeto en una declaración.

Muestra: sample73.html

  

El uso de la notación literal nos permite crear objetos, incluidas las propiedades definidas, con menos código y encapsular visualmente los datos relacionados. Observe el uso de la : y , Operadores en una sola declaración. Esta es en realidad la sintaxis preferida para crear objetos en JavaScript debido a su terseness y legibilidad.

Debe tener en cuenta que los nombres de propiedades también se pueden especificar como cadenas:

Muestra: sample74.html

  

No es necesario especificar las propiedades como cadenas a menos que el nombre de la propiedad:

  • Es una de las palabras clave reservadas (clase).
  • Contiene espacios o caracteres especiales (que no sean números, letras, el signo de dólar ($) o el carácter de subrayado (_)).
  • Comienza con un número.

¡Cuidadoso! La última propiedad de un objeto no debe tener una coma al final. Esto causará un error en algunos entornos de JavaScript.


Todos los objetos heredados de Objeto.prototipo

los Objeto() La función constructora en JavaScript es especial, ya que su prototipo La propiedad es la última parada en la cadena de prototipos..

En la siguiente muestra, añado el Objeto.prototipo con un foo propiedad y luego crear una cadena e intentar acceder a la foo propiedad como si fuera una propiedad de la instancia de cadena. Desde el myString instancia no tiene un foo propiedad, la cadena de prototipos se activa y el valor se busca en String.prototype. No está allí, por lo que el siguiente lugar para mirar es Objeto.prototipo, que es la ubicación final, JavaScript buscará un valor de objeto. los foo El valor se encuentra porque lo agregué, por lo que devuelve el valor de foo.

Muestra: sample75.html

  

Conclusión

¡Cuidadoso! Cualquier cosa añadida a Objeto.prototipo aparecerá en una para en Bucle y la cadena prototipo. Debido a esto, se ha dicho que el cambio Objeto.prototipo está prohibido.