Constructor de objeto de JavaScript

Ejemplo

function Persona(primer, apellido, edad, ojo) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

Prueba personalmente

Es una buena costumbre nombrar a la función constructora con mayúsculas.

objeto tipo (plano) (clase)

El ejemplo del capítulo anterior tiene limitaciones. Sólo pueden crear un solo objeto.

A veces necesitamos crear muchos objetos del "plano”.

Crear un método para "objeto tipo" es usarla función constructora del objeto

En el ejemplo anterior,función Persona() es la función constructora del objeto.

A través de new La palabra clave de la función constructora puede crear objetos del mismo tipo:

var miPadre = new Persona("Bill", "Gates", 62, "azul");
var miMadre = new Persona("Steve", "Jobs", 56, "verde");

Prueba personalmente

this palabra clave

En JavaScript, se llama this lo que posee es el "propietario" del código.

this su valor, cuando se utiliza en un objeto, es el objeto en sí mismo.

En la función constructora,this No tiene valor. Es un sustituto de un nuevo objeto. Cuando se crea un nuevo objeto, el valor de this se convertirá en ese nuevo objeto.

Tenga en cuenta this No es una variable. Es una palabra clave. No se puede cambiar el valor de this.

Agregar atributos a objetos

Agregar un nuevo atributo a un objeto existente es muy simple:

Ejemplo

myFather.nationality = "English";

Prueba personalmente

El nuevo atributo se agrega a myFather. No a myMother ni a ningún otro objeto person.

Agregar métodos a objetos

Agregar un nuevo método a un objeto existente es muy simple:

Ejemplo

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};

Prueba personalmente

El nuevo método se agrega a myFather. No a myMother ni a ningún otro objeto person.

Agregar atributos a constructores

A diferencia de agregar un nuevo atributo a un objeto existente, no se puede agregar un nuevo atributo a un constructor de objetos:

Ejemplo

Person.nationality = "English";

Prueba personalmente

Para agregar un nuevo atributo a un constructor, debe agregarse a la función constructora:

Ejemplo

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

Prueba personalmente

De esta manera, las propiedades del objeto pueden tener valores predeterminados.

Agregar métodos a constructores

Su función constructora también puede definir métodos:

Ejemplo

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.name = function() {return this.firstName + " " + this.lastName;};
}

Prueba personalmente

A diferencia de agregar un nuevo método a un objeto existente, no se puede agregar un nuevo método a un constructor de objetos.

Se debe agregar un método a un objeto dentro de la función constructora:

Ejemplo

function Person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

La función changeName() asigna el valor de name al atributo lastName de la persona.

Ahora puede intentarlo:

myMother.changeName("Jobs");

Prueba personalmente

mediante myMother reemplazar this,JavaScript puede saber qué persona está procesando en este momento.

Constructores de JavaScript integrados

JavaScript proporciona constructores para objetos primitivos:

Ejemplo

var x1 = new Object();    // Nuevo objeto Object
var x2 = new String();    // Nuevo objeto String
var x3 = new Number();    // Nuevo objeto Number
var x4 = new Boolean();   // Nuevo objeto Boolean
var x5 = new Array();     // Nuevo objeto Array
var x6 = new RegExp();    // Nuevo objeto RegExp
var x7 = new Function();  // Nuevo objeto Function
var x8 = new Date();      // Nuevo objeto Date

Prueba personalmente

Math() Los objetos ya no están en esta lista. Math es un objeto global.new Las palabras clave no se pueden usar en Math.

¿Sabía usted que?

Como se puede ver a continuación, JavaScript proporciona versiones de objetos de tipos de datos primitivos (cadenas, números y booleanos). Sin embargo, no hay razón para crear objetos complejos. Los valores primitivos son mucho más rápidos!

Por favor, utilice la literal de objeto {} reemplazar new Object()

Por favor, utilice la literal de string "" reemplazar new String()

Por favor, utilice la literal numérica Number()

Por favor, utilice la literal booleana new Boolean()

Por favor, utilice la literal de array [] reemplazar new Array()

Por favor, utilice la literal de patrones new RegExp()

Por favor, utilice la expresión de función () {} reemplazar new Function()

Ejemplo

var x1 = {};            // Nuevo objeto
var x2 = "";            // Nuevo string original
var x3 = 0;             // Nuevo valor numérico original
var x4 = false;         // Nuevo valor lógico original
var x5 = [];            // Nuevo objeto de array
var x6 = /()/           // Nuevo objeto de expresión regular
var x7 = function(){};  // Nuevo objeto de función

Prueba personalmente

Objeto de cadena

Generalmente, las cadenas se crean como valores primitivos: var firstName = "Bill"

Pero también se puede usar new Crear objetos de cadena con palabras clave: var firstName = new String("Bill")

Por favor, en Cadenas JSEn esta sección aprenderás por qué no debes crear cadenas como objetos.

Objeto numérico

Generalmente, los números se crean como valores primitivos: var x = 456

Pero también se puede usar new Crear objetos numéricos con palabras clave: var x = new Number(456)

Por favor, en Números JSEn esta sección aprenderás por qué no debes crear números como objetos.

Objeto booleano

Generalmente, los valores lógicos se crean como valores primitivos: var x = false

Pero también se puede usar new Crear objetos lógicos con palabras clave: var x = new Boolean(false)

Por favor, en Lógica JSEn esta sección aprenderás por qué no debes crear valores lógicos como objetos.