Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   использование scope вызывавшего объекта (https://javascript.ru/forum/events/24265-ispolzovanie-scope-vyzyvavshego-obekta.html)

igrok 23.12.2011 13:25

использование scope вызывавшего объекта
 
Приветствую всех,
есть такой код....

var test=function(){
	this.ajaxSend=function(){
		var req=new Request(url, this.callback);
		req.addVar("par1", 1);
		req.addVar("par2", "ыыыыыы");
		req.send();
	};
	this.callback=function(){
		console.log(this);
	};
};
var test1=new test();
test1.ajaxSend();


(Request это обертка над ajax)
результатом в консоли будет объект "Request", а хотелось бы "test1"
подскажите можно ли как то передать scope в callback не делая так "var req=new Request(url, this.callback, this);"


Всем спасибо

igrok 23.12.2011 13:41

Вобщем пока формулировал вопрос, сам вроде разобрался, вот по этой ссылке
http://stackoverflow.com/questions/1...-success-scope
нашел совет как этого избежать

var test=function(){
	var self=this;

	self.ajaxSend=function(){
		var req=new Request(url, self.callback);
		req.addVar("par1", 1);
		req.addVar("par2", "ыыыыыы");
		req.send();
	};
	self.callback=function(){
		console.log(self);
	};
};
var test1=new test();
test1.ajaxSend();


но если кто знает другие решения если не сложно поделитесь.

Всем спасибо

sashavorkov 23.12.2011 16:22

Может еще так
var test=function(){
	function s(p,f){
		return function(){f.apply(p,arguments)}
	};

	self.ajaxSend=function(){
		var req=new Request(url, self.callback);
		req.addVar("par1", 1);
		req.addVar("par2", "ыыыыыы");
		req.send();
	};
	self.callback= s(this,function(){console.log(self);});
};
var test1=new test();
test1.ajaxSend();


Часовой пояс GMT +3, время: 21:59.