Передайте это ключевое слово в цикле $ .each

0

Я хочу передать этот контекст в цикле $.each в моем нижнем коде.

var obj = {
  "flammable": "inflammable",
  "duh": "no duh"
};
$.each( obj, _foo);

function _foo (key, value) {
    console.log(this);
    alert( key + ": " + value );
}

Как передать это ключевое слово в функцию обратного вызова в приведенном выше сценарии?

  • 0
    какой объект вы хотите this обратиться к
Теги:

3 ответа

2
Лучший ответ

Если вы говорите, что хотите сохранить this значение внешним, то, поскольку вы выполняете итерацию с помощью jQuery, вам нужно привязать this значение к функции.

jQuery имеет $.proxy который позволит вам сделать это:

$.each(obj, $.proxy(_foo, this));

Или используйте собственный метод .bind().

$.each(obj. _foo.bind(this));

Нативный .forEach() позволяет передать this значение в качестве второго аргумента. Но поскольку у вас нет объекта с массивом или массивом, вы не можете использовать его напрямую.

0

Используйте $.proxy() для передачи пользовательского контекста вызову функции

var obj = {
    "flammable": "inflammable",
        "duh": "no duh"
};
$.each(obj, $.proxy(_foo, this));

function _foo(key, value) {
    console.log(this);
    alert(key + ": " + value);
}
0

Вы можете использовать функцию javascript bind(), проверить поддержку браузера (т.е. 9 и выше).

var obj = {
  "flammable": "inflammable",
  "duh": "no duh"
};
$.each( obj, _foo.bind(obj));

function _foo (key, value) {
    console.log(this);
    //alert( key + ": " + value );
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню