Я хочу передать этот контекст в цикле $.each в моем нижнем коде.
var obj = {
"flammable": "inflammable",
"duh": "no duh"
};
$.each( obj, _foo);
function _foo (key, value) {
console.log(this);
alert( key + ": " + value );
}
Как передать это ключевое слово в функцию обратного вызова в приведенном выше сценарии?
Если вы говорите, что хотите сохранить this
значение внешним, то, поскольку вы выполняете итерацию с помощью jQuery, вам нужно привязать this
значение к функции.
jQuery имеет $.proxy
который позволит вам сделать это:
$.each(obj, $.proxy(_foo, this));
Или используйте собственный метод .bind()
.
$.each(obj. _foo.bind(this));
Нативный .forEach()
позволяет передать this
значение в качестве второго аргумента. Но поскольку у вас нет объекта с массивом или массивом, вы не можете использовать его напрямую.
Используйте $.proxy() для передачи пользовательского контекста вызову функции
var obj = {
"flammable": "inflammable",
"duh": "no duh"
};
$.each(obj, $.proxy(_foo, this));
function _foo(key, value) {
console.log(this);
alert(key + ": " + value);
}
Вы можете использовать функцию 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 );
}
this
обратиться к