Preguntas de Programación Orientada a Objetos

  1. Escriba un código JavaScript que defina una clase Persona con atributos nombre y apellidos y que disponga de un método saluda.

  2. Escriba una clase Programador que hereda de Persona

  3. Escriba un código ECMA6 que defina una clase Persona con atributos nombre y apellidos y que disponga de un método saluda.

  4. Usando ECMA6 escriba una clase Programador que hereda de Persona

  5. Explique las diferencias en la salida entre este código

      function Person() {
        this.age = 0;

        function growUp() {
          this.age += 10;
        }
        growUp();
        console.log(this.age);
      }
      var p = new Person();

y este otro:

      function Person() {
        this.age = 0;

        var growUp = () => {
          this.age += 10;
        }
        growUp();
        console.log(this.age);
      }

      var p = new Person();

Justifique su respuesta.

  1. Explique que hacen los métodos bind, apply y call y cuales son sus similitudes y diferencias
  2. ¿Cual es el significado del primer argumento del método Object.cretate? ¿Y el segundo?
  3. Todo objeto JavaScript tiene una propiedad "prototype" ¿verdadero o falso?
  4. La propiedad prototype de una función es un objeto de tipo Function ¿verdadero o falso?
  5. El prototype de una función es un objeto de tipo Function ¿verdadero o falso?
  6. ¿Cual es el problema con este código? ¿Como se arregla el problema?
    Object.prototype.nonsense = "hi";
    for (var name in map)
    console.log(name);
    
  7. ¿Que significa que una propiedad es no-enumerable?
  8. ¿Como puedo crear un objeto que carezca de prototipo?

10 El argumento descriptor del método

Object.defineProperty(obj, prop, descriptor)

puede ser de uno de dos tipos: data descriptors o accessor descriptors.

  • Un data descriptor es una propiedad que tiene un value, que puede o no ser writable.
  • Un accessor descriptor es una propiedad que describe un par de funciones getter-setter.

Un descriptor puede ser de uno de estos tipos pero no puede ser ambos.

Explique cuales de estas propiedades pertenecen a que tipo, cual es su valor por defecto y que describen:

  1. configurable
  2. enumerable
  3. value
  4. writable
  5. get
  6. set