Prototipo en JavaScript

JavaScript es un lenguaje basado en prototipos, por lo que, cada vez que creamos una función usando JavaScript, el motor de JavaScript agrega una propiedad prototipo dentro de una función, la propiedad Prototipo es básicamente un objeto (también conocido como objeto Prototipo), donde podemos adjuntar métodos y propiedades en un objeto prototipo, que permite que todos los demás objetos hereden estos métodos y propiedades.

Considere el siguiente ejemplo: –

Hay diferentes formas de crear un objeto, una de ellas es crear un objeto usando el constructor de funciones.

<script>
// function constructor
function Person(name, job, yearOfBirth){   
    this.name= name;
    this.job= job;
    this.yearOfBirth= yearOfBirth;
}
// this will show Person's prototype property.
console.log(Person.prototype);
</script> 

Producción:-

dcdc

En la imagen de arriba, puede ver que Person tiene una propiedad de prototipo y esa propiedad de prototipo tiene un objeto constructor que nuevamente apunta a la función constructora de Person.

Podemos entender esto por una Imagen:

Cuando creamos un objeto utilizando el constructor de funciones anterior, JavaScript Engine agregará dunder proto o __proto__ en el objeto que apuntará al objeto constructor del prototipo.

Ahora, agregaremos un método de cálculo de edad() a la propiedad Prototipo en un constructor de función de persona que heredarán los diferentes objetos. A continuación se muestra el código para esto: –

<script>
// function constructor
function Person(name, job, yearOfBirth){   
    this.name= name;
    this.job= job;
    this.yearOfBirth= yearOfBirth;
}
Person.prototype.calculateAge= function(){
    console.log('The current age is: '+(2019- this.yearOfBirth));
}
console.log(Person.prototype);
</script>

Producción:-

En la imagen de arriba, podemos ver que el método de cálculo de edad() se agrega a la propiedad de prototipo. Ahora, crearemos 2 objetos diferentes que heredarán el método de cálculo de edad() y recordaremos que, cuando se llama a un determinado método (o propiedad), primero verifica dentro del objeto, pero cuando no lo encuentra, luego la búsqueda se mueve en el prototipo del objeto.

<script>
  
 // function constructor
function Person(name, job, yearOfBirth){  
    this.name= name;
    this.job= job;
    this.yearOfBirth= yearOfBirth;
}
// adding calculateAge() method to the Prototype property
Person.prototype.calculateAge= function(){ 
    console.log('The current age is: '+(2019- this.yearOfBirth));
}
console.log(Person.prototype);
  
// creating Object Person1
let Person1= new Person('Jenni', 'clerk', 1986); 
console.log(Person1)
let Person2= new Person('Madhu', 'Developer', 1997);
console.log(Person2)
  
Person1.calculateAge();
Person2.calculateAge();
  
</script>

Producción:-

Aquí, creamos dos Objetos Person1 y Person2 usando la función constructora Person, cuando llamamos Person1.calculateAge() y Person2.calculateAge(), Primero verificará si está presente dentro del objeto Person1 y Person2, si no está presente, lo moverá el objeto Prototipo de la persona e imprimirá la edad actual, lo que muestra que la propiedad Prototipo permite que otros objetos hereden todas las propiedades y métodos del constructor de funciones.

Publicación traducida automáticamente

Artículo escrito por shubhdwiv123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *