Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2013, 11:48
Новичок на форуме
Отправить личное сообщение для lamo4ok Посмотреть профиль Найти все сообщения от lamo4ok
 
Регистрация: 15.05.2013
Сообщений: 3

proxy() и изменение переданного в контекст объекта
function GetRusMaterial(d) {
	var d1 = {id:0,rus:""};
	$.post("/bin/cms/api.php",{action: "GetRusmaterial", param1:d}, $.proxy(function(data){
		var d2 = eval('(' + data + ')');
		this.id = d2.id;
		this.rus = d2.rus;
		alert(this.id);
	},d1));
	alert(d1.id);
	return d1;
};


Вот такой вот код не выдает никаких ошибок, однако как только мы выходим за пределы функции, в которой мы пытаемся изменить объект, переданный как контекст в нашу callback-функцию, оказывается, что данный объект изменен не был. Другими словами, первый alert выдает одно значение, а второй alert опять сообщает, что d1.id равно 0.
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2013, 16:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

// эмулируем jQuery
$ = {
    post: function(url, data, callback) {
        var data = '{"id":100500,"rus":"гыгы"}';
        setTimeout(function(){ callback(data) });
    },
    proxy: function(fn, context) {
        return fn.bind(context);
    }
};

function GetRusMaterial(d) {
    var d1 = {id:0,rus:""};
    $.post("/bin/cms/api.php",{action: "GetRusmaterial", param1:d}, $.proxy(function(data){
        var d2 = JSON.parse(data);
        this.id = d2.id;
        this.rus = d2.rus;
        alert('Новое значение:' + d1.id);
    },d1));
    alert('Начальное значение: ' + d1.id);
    return d1;
};

GetRusMaterial(1);


Не вижу никаких противоречий.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение значение объекта daima Общие вопросы Javascript 0 19.10.2012 17:22
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00