1
respuesta

Comportamiento indefinido, Error Respuesta

En el curso JavaScript. Herencia e Interfaces en Orientación a Objetos, sección Comportamiento indefinido, se muestra un código de javascript sin embargo al responder la pregunta que se plantea está mal.

Al ejecutar el código, el resultado es: undefined. ¿Por qué sucede esto? La plataforma toma como correcta la respuesta A, pero considero que no es esa la razón, la respuesta verdadera es la C. 1.- saldo está definido dentro de la clase cuenta como privado 2.- la clase CuentaCorriente no implementa forma para llamar a saldo y cuenta corriente no define un método para acceder al mismo.

Conclusión, respuesta correcta: Pedro no tiene acceso a una propiedad privada y por eso Javascript retorna undefined cuando intentamos acceder a ella.

Evidencia

1 respuesta

Hola Rigoberto, gracias por tu mensaje. Permiteme mostrate porque la respuesta correcta es la B y no la C. Mira el siguiente código donde colocamos un getter llamado saldo

class Cuenta {
    #saldo;
    constructor(titular, numero) {
      this.titular = titular;
      this.numero = numero;
      this.#saldo = 0;
    }
    get saldo() {
        return this.#saldo;
    }
  }

  class CuentaCorriente extends Cuenta {
    constructor(titular, numero) {
      super(titular, numero);
    }
  }

  const cuenta = new CuentaCorriente("Pedro", 1245);
  console.log(cuenta.saldo)

En este caso cuenta.saldo es un getter, observa que el interprete trata a #saldo diferente de saldo, por lo tanto cuando en la pregunta original pedimos (cuenta.saldo), lo correcto es que retorna undefined porque se solicita una propiedad no definida. Si pruebas este código va retornar 0, porque quien retorna es el getter.

Si quisieramos intentar acceder a la propiedad privada, seria (console.#saldo), pero allí el interprete nos dice que una propiedad privada solo es accesible dentro de la clase. Recordando que en dentro de la clase accedemos a las propiedades privadas de la forma this.#saldo

Entiendo que otros lenguajes al tener modificadores de acceso, efectivamente la respuesta correcta sería la C, pero en el caso de Javascript, accedemos como te comenté anteriormente.

Atte Leonardo