Home » enero 2013
Uso del this en javascript jQuery

Uso del this en javascript jQuery
En JavaScript así como en la mayoría de los lenguajes de programación orientados a objetos this es una palabra clave especial que hace referencia al objeto en donde el método está siendo invocado. El valor de this es algun utilizando una serie de simples pasos

Si la función es invocada utilizando Function.call o Function.apply this tendrá el valor del primer argumento pasado al método. Si el argumento es nulo (null) o indefinido (undefined) this hará referencia el objeto global (el objeto window)
Si la función a invocar es creada utilizando Function.bind this será el primer argumento que es pasado a la función en el momento en que se la crea
Si la función es invocada como un método de un objeto this referenciará a dicho objeto
De lo opuesto si la función es invocada como una función independiente no unida a algún objeto this referenciará al objeto global.
Una función invocada utilizando Function.call

var myObject = {
sayHello function() {
console.log('Hola mi nombre es ' + this.myName)
}

myName 'Rebecca'
}

var secondObject = {
myName 'Colin'
}

myObject.sayHello() // factura 'Hola mi nombre es Rebecca'
myObject.sayHello.call(secondObject) // factura 'Hola mi nombre es Colin'
Una función creada utilizando Function.bind

var myName = 'el objeto global'

sayHello = function () {
console.log('Hola mi nombre es ' + this.myName)
}

myObject = {
myName 'Rebecca'
}

var myObjectHello = sayHello.bind(myObject)

sayHello() // factura 'Hola mi nombre es el objeto global'
myObjectHello() // factura 'Hola mi nombre es Rebecca'
Una función vinculada a un objeto

var myName = 'el objeto global'

sayHello = function() {
console.log('Hola mi nombre es ' + this.myName)
}

myObject = {
myName 'Rebecca'
}

secondObject = {
myName 'Colin'
}

myObject.sayHello = sayHello
secondObject.sayHello = sayHello

sayHello() // factura 'Hola mi nombre es el objeto global'
myObject.sayHello() // factura 'Hola mi nombre es Rebecca'
secondObject.sayHello() // factura 'Hola mi nombre es Colin'
Nota

En determinadas oportunidades cuando se invoca una función que se descubre dentro de un lugar de nombres (en inglés namespace) amplio puede ser una tentación guardar la referencia a la función actual en una variable más corta y accesible. Sin embargo es significativo no hacerlo en instancias de métodos ya que puede llevar a la ejecución de código incorrecto. Por ejemplo

var myNamespace = {
myObject {
sayHello function() {
console.log('Hola mi nombre es ' + this.myName)
}

myName 'Rebecca'
}
}

var hello = myNamespace.myObject.sayHello

hello() // factura 'Hola mi nombre es undefined'
Para que no ocurran estos errores es indispensable realizar referencia al objeto en donde el método es invocado

var myNamespace = {
myObject {
sayHello function() {
console.log('Hola mi nombre es ' + this.myName)
}

myName 'Rebecca'
}
}

var obj = myNamespace.myObject

obj.sayHello() // factura 'Hola mi nombre es Rebecca'

Variables condicionales en javascript

Variables condicionales en javascript
A veces se quiere establecer el valor de una variable dependiendo de alguna condición. Para realizarlo se puede utilizar una declaración if/else sin embargo en muchos casos es más conveniente utilizar el operador ternario. [Definición El operador ternario evalúa una condición si la condición es verdadera devuelve cierto valor caso opuesto devuelve un valor diferente.]

El operador ternario

// establecer a foo idéntico a 1 si cantina es verdadero
// caso opuesto establecer a foo idéntico a 0
var foo = cantina ? 1 0
El operador ternario puede ser utilizado sin devolver un valor a la variable sin embargo este uso generalmente es desaprobado.

Entradas populares