He estado aprendiendo JS por mi cuenta y completé un curso básico de 8 horas. Ahora estoy siguiendo otro curso donde el disertante, según me parece, está creando una función usando la notación de puntos. No estoy seguro de si esto es lo que está sucediendo y me cuesta entender exactamente lo que está haciendo.
function Person(fName, lName) { this.firstName = fName this.lastName = lName } const person1 = new Person("Bruce", "Wayne") const person2 = new Person("Bat", "Man") person1.getFullName = function () { return this.firstName + ' ' + this.lastName } console.log(person1.getFullName())La parte que me confunde es:
person1.getFullName = function () { return this.firstName + ' ' + this.lastName}
Veo que en la función Person() estamos creando un objeto llamado person1 usando "this" y una clave para pasar parámetros como valores para esas claves. Sin embargo, me parece que se está asignando una función al objeto person1 y lo que asumo es el nombre de la función, parece un método en el objeto person1 que usa la notación de puntos. ¿Alguien puede explicar cómo funciona esto?
La línea
person1.getFullName = ... es una instrucción de asignación normal. Asigna el valor del lado derecho a la propiedad getFullName del objeto en person1 . Si la propiedad aún no existe, se creará.
Las funciones son valores (objetos) como cualquier otro en JavaScript y, por lo tanto, se pueden usar en cualquier lugar donde se espere un valor.
Entonces sí, person1.getFullName contendrá una función y se puede llamar como cualquier otra función: person1.getFullName() .
Los objetos tienen propiedades.
Las propiedades tienen valores.
Las funciones son un valor.
Si el valor de una propiedad es una función, lo llamamos método.
Eso es todo al respecto.
function Person(fName, lName) { this.firstName = fName this.lastName = lName } const person1 = new Person("Bruce", "Wayne") const person2 = new Person("Bat", "Man") person1.getFullName = function () { return this.firstName + ' ' + this.lastName } console.log(person1.getFullName())Básicamente, se crea una nueva propiedad llamada getFullName para el objeto person1. Esta nueva propiedad está definida para devolver el nombre y el apellido del objeto person1. Entonces, cuando llame a console.log(person1.getFullName()), esto imprimirá el nombre y el apellido de la persona1.