"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se pueden utilizar las clases de ES6 para ampliar funciones y acceder a datos de instancia?

¿Cómo se pueden utilizar las clases de ES6 para ampliar funciones y acceder a datos de instancia?

Publicado el 2024-11-12
Navegar:404

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

Extensión de función con clases ES6

En ES6, los objetos especiales se pueden extender, permitiendo la herencia del objeto Función. Si bien es posible llamar a dichos objetos como funciones, implementar la lógica para esta llamada puede ser un desafío.

Pasar datos de instancia a una llamada de función

Al llamar a una clase como una función , esto se refiere al objeto de ventana. Para acceder a los datos de la instancia, hay dos enfoques disponibles:

  1. Codificación fija: Fuerza la superllamada para que espere una cadena de código que contenga los datos de la instancia.
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}
  1. Uso de un cierre: Devuelve una función de cierre que accede a variables de instancia.
class Smth extends Function {
  constructor(x) {
    function smth() { return x; };
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}

Resumen de la extensión de función

Un enfoque más generalizado es crear una clase ExtensibleFunction que maneje la extensión:

class ExtensibleFunction extends Function {
  constructor(f) {
    return Object.setPrototypeOf(f, new.target.prototype);
  }
}

Esta clase se puede usar para extender clases específicas:

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}

En resumen, extender Function con clases ES6 permite heredar el comportamiento de la función mientras se personaliza la lógica de llamada. Se pueden utilizar diferentes enfoques para proporcionar acceso a los datos de la instancia al llamar a la función extendida.

Declaración de liberación Este artículo se reimprime en: 1729462035 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3