Solucio exercicis this

De wikiserver
Dreceres ràpides: navegació, cerca
Exercici 8
var persona = {
    name: 'edu',
    twitter: 'eiximenis',
    twitterUrl: 'http://twitter.com/' + this.twitter
};
 
console.log(persona.twitterUrl);


Exercici 8.1

// this == window
console.debug(this);

function test(){
	// this == window
console.debug(this);
}

test();

Exercici 8.2

var obj = {
	name: 'obj',
	run: function(){
		// this == obj
		this.value = 1;
		console.debug(this.name);
	}
};

obj.run();

Exercici 8.3

var obj = {
	name: 'obj',
	run: function(){
		this.value = 1;
		console.debug(this); // this == obj
		
		(function(){ // se crea un nuevo scope
			console.debug(this); // this == window
		})();
		
		function test(){ // se crea un nuevo scope
			console.debug(this); // this == window
		}
		
		test();
	}
};

obj.run();


Exercici 8.4

var obj = {
    name: 'obj',
    run: function(){
        this.value = 1;
        console.debug(this); // this == obj
         
        (function(){
            console.debug(this); // this == obj
        }).call(this); // se autoejecuta con el método call
         
        this.test = function(){ // se define como método de obj
            console.debug(this); // this == obj
        }
         
        this.test(); // se ejecuta dentro del contexto de obj
    }
};
 
obj.run();