Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передать this функции (https://javascript.ru/forum/misc/43983-peredat-funkcii.html)

Maxim_Never 29.12.2013 22:56

Передать this функции
 
// Конструктор
	function __construct(data1, data2) {
		this.name = data1;
		this.age = function() {return 'I refuse to answer this question, bitch'};
		this.url = data2;
		this.makeAjaxRequestWithJQuery = function() {
			this.nick = 'nick'; // 'this.nick' Относится к будущему объекту
			
			$.ajax({
				// 'this.url' относится уже не к будущему объекту
				// --> Как в этом контексте использовать this будущего объекта? <--
				url: this.url // ERROR, DO NOT WORK, SON OF A BI*TCH!
			});
		}
	}

Vlasenko Fedor 29.12.2013 23:06

// Конструктор
	function __construct(data1, data2) {
		this.name = data1;
		this.age = function() {return 'I refuse to answer this question, bitch'};
		this.url = data2;
		this.makeAjaxRequestWithJQuery = function() {
			this.nick = 'nick'; // 'this.nick' Относится к будущему объекту
			var thisurl = this.url;
			$.ajax({
				// 'this.url' относится уже не к будущему объекту
				// --> Как в этом контексте использовать this будущего объекта? <--
				url: thisurl
			});
		}
	}

Maxim_Never 29.12.2013 23:08

Как обычно, все просто. Спасибо!

danik.js 29.12.2013 23:50

Ну вобще оно и так должно работать, твой пример неправильный наверное. Может ты хотел использовать this.url в callback-функции "success"?

Можно еще .bind(this) заюзать, но это не кроссбраузерно (хотя и поправимо, например es5shim.js )

danik.js 29.12.2013 23:53

Цитата:

Сообщение от Maxim_Never
function __construct

Серьезно? Ты видимо спутал JS с PHP. В JS нет нужды называть конструктор так. Лучше дать понятное имя, как ты классы называешь в PHP. Например var motherFucker = new MotherFucker('Maxim', 'www.never.me')


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