🙀JavaScript no tiene clases

La sintaxis de clase que es 🔷 Syntactic Sugar

Empezemos con un ejemplo :

class Rectangle {
    constructor(width, height) {
        this.width = width;
        this.height = height;
    }

    isSquare() {
        return this.width === this.height;
    }
}

Si le preguntas a JavaScript sobre el tipo de Rectangle:

typeof(Rectangle); //"function"

Antes de que la palabra clave class se añadiera al lenguaje en 2015, así es como solíamos escribir "clases":

// Este es el constructor
function Rectangle(width, height) {
    this.width = width;
    this.height = height;
}

// este es un método de instancia (que puedes llamar en nuevas instancias de Rectangle)
// Nota: esto tiene que ser una función (no una función de flecha), se explicará más adelante en el alcance léxico
Rectangle.prototype.isSquare = function() {
    return this.width === this.height;
}

Al asignar una nueva función a Rectangle.prototype estás agregando un nuevo método de instancia a las instancias de Rectangle.

Eso significa que, cada vez que creas un nuevo Rectangle, esa instancia tendrá un método de instancia llamado isSquare que puede acceder a las propiedades de instancia a través de this. (por ejemplo, this.width y this.height).

Esta sintaxis no es fácil de entender para la mayoría de los desarrolladores, y está perfectamente bien que te sientas así. Lo importante es que seas capaz de reconocerlo.

Última actualización