esto (programación de computadoras)


this , self y Me son palabras clave que se utilizan en algunos lenguajes de programación de computadoras para hacer referencia al objeto, clase u otra entidad de la que forma parte el código que se está ejecutando actualmente. La entidad a la que se refieren estas palabras clave depende, por tanto, del contexto de ejecución (por ejemplo, a qué objeto se llama su método). Los diferentes lenguajes de programación utilizan estas palabras clave de formas ligeramente diferentes. En idiomas donde una palabra clave como "esto" es obligatoria, la palabra clave es la única forma de acceder a los datos y métodos almacenados en el objeto actual. Donde sea opcional, pueden eliminar la ambigüedad de variables y funciones con el mismo nombre.

En muchos lenguajes de programación orientados a objetos , this(también llamado selfo Me) es una variable que se usa en métodos de instancia para referirse al objeto en el que están trabajando. El primer lenguaje OO, SIMULA 67 , se utiliza thispara hacer referencia explícita al objeto local. [1] : 4.3.2.3  C ++ y los lenguajes que derivan en estilo de él (como Java , C # , D y PHP ) también suelen utilizar this. Smalltalk y otros, como Object Pascal , Perl , Python ,Ruby , Rust , Objective-C , DataFlex y Swift , use self. Usos de Visual Basic de Microsoft Me.

El concepto es similar en todos los lenguajes: thissuele ser una referencia o puntero inmutable que se refiere al objeto actual; el objeto actual suele ser el código que actúa como "padre" de la propiedad , método , subrutina o función que contiene la thispalabra clave. Una vez que un objeto está correctamente construido o instanciado, thissiempre es una referencia válida. Algunos idiomas lo requieren explícitamente; otros usan el alcance léxico para usarlo implícitamente para hacer visibles los símbolos dentro de su clase. O alternativamente, el objeto actual al que se hace referencia por thispuede ser un objeto de código independiente que ha llamado a la función o método que contiene la palabra clavethis. Esto sucede, por ejemplo, cuando un controlador de eventos JavaScript adjunto a una etiqueta HTML en una página web llama a una función que contiene la palabra clave thisalmacenada en el espacio global fuera del objeto del documento; en ese contexto, thisse referirá al elemento de página dentro del objeto de documento, no al objeto de ventana adjunto. [2]

En algunos lenguajes, por ejemplo, C ++ y Java, thiso selfes una palabra clave , y la variable existe automáticamente en los métodos de instancia. En otros, por ejemplo Python, Rust y Perl 5, el primer parámetro de un método de instancia es dicha referencia. Debe especificarse explícitamente. En Python y Perl, el parámetro no necesita necesariamente ser nombrado thiso self; El programador puede nombrarlo libremente como cualquier otro parámetro. Sin embargo, por convención informal, se nombra el primer parámetro de un método de instancia en Perl o Python self. Rust requiere que se llame al objeto self &selfo self, dependiendo de si la función invocada toma prestado el invocante o lo mueve, respectivamente.

Los métodos estáticos en C ++ o Java no están asociados con instancias sino con clases, por lo que no se pueden usar thisporque no hay ningún objeto. En otros lenguajes, como Ruby, Smalltalk, Objective-C o Swift, el método está asociado con un objeto de clase que se pasa como this, y se denominan métodos de clase . Para los métodos de clase, Python usa clspara acceder al objeto de clase .

Cuando se usa el alcance léxico para inferir this, el uso de thisen el código, aunque no es ilegal, puede hacer sonar campanas de advertencia a un programador de mantenimiento, aunque todavía hay usos legítimos de thisen este caso, como referirse a variables de instancia ocultas por variables locales de la mismo nombre, o si el método quiere devolver una referencia al objeto actual, es decir this, a sí mismo.