Los últimos tutoriales de desarrollo web
 

JavaScript Los prototipos de objetos


Cada objeto tiene un prototipo de JavaScript. El prototipo es también un objeto.

Todos los objetos de JavaScript heredan sus propiedades y métodos de su prototipo.


Los prototipos de JavaScript

Todos los objetos JavaScript heredan las propiedades y métodos de su prototipo.

Los objetos creados usando un objeto literal o con new Object() , heredan de un prototipo llamado Object.prototype.

Los objetos creados con new Date() heredan el Date.prototype.

El Object.prototype está en la parte superior de la cadena de prototipo.

Todos los objetos JavaScript (Date, Array, RegExp, Function, ....) heredan de la Object.prototype .


La creación de un prototipo

La forma estándar para crear un prototipo de objeto es utilizar una función de objeto constructor:

Ejemplo

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

Con una función constructora, se puede utilizar la new palabra clave para crear nuevos objetos del mismo prototipo:

Ejemplo

var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
Inténtalo tú mismo "

La función del constructor es el prototipo de Person objetos.
Se considera una buena práctica función de nombre de constructor con una primera letra mayúscula.


Adición de propiedades y métodos de los objetos

A veces desea agregar nuevas propiedades (o métodos) a un objeto existente.

A veces desea agregar nuevas propiedades (o métodos) a todos los objetos existentes de un tipo dado.

A veces desea agregar nuevas propiedades (o métodos) para un prototipo de objeto.


Adición de una propiedad a un objeto

Adición de una nueva propiedad a un objeto existente es fácil:

Ejemplo

myFather.nationality = "English";
Inténtalo tú mismo "

La propiedad se añadirá a myFather . No myMother . No a otros objetos persona.


Adición de un método de un objeto

Adición de un nuevo método para un objeto existente también es fácil:

Ejemplo

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};
Inténtalo tú mismo "

El método se añadirá a myFather . No myMother .


Adición de propiedades a un Prototipo

No se puede agregar una nueva propiedad a un prototipo de la misma forma que se agrega una nueva propiedad a un objeto existente, debido a que el prototipo no es un objeto existente.

Ejemplo

Person.nationality = "English";
Inténtalo tú mismo "

Para añadir una nueva propiedad a un constructor, debe agregarlo 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"
}
Inténtalo tú mismo "

las propiedades de prototipo pueden tener valores de prototipo (valores por defecto).


Adición de métodos a un prototipo

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;};
}
Inténtalo tú mismo "

Usando el prototype de la propiedad

El JavaScript prototype la propiedad le permite añadir nuevas propiedades a un prototipo existente:

Ejemplo

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
Inténtalo tú mismo "

La propiedad prototipo de JavaScript también permite añadir nuevos métodos a un prototipo existente:

Ejemplo

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
    return this.firstName + " " + this.lastName;
};
Inténtalo tú mismo "

Sólo modificar sus propios prototipos. Nunca modifique los prototipos de objetos de JavaScript estándar.