我想在下面的代码中以$ .each循环传递此上下文。
var obj = {
"flammable": "inflammable",
"duh": "no duh"
};
$.each( obj, _foo);
function _foo (key, value) {
console.log(this);
alert( key + ": " + value );
}
如何在上述场景中在回调函数中传递此关键字?
答案 0 :(得分:2)
如果您要保留外部this
值,那么由于您正在使用jQuery进行迭代,因此您需要将this
值绑定到该函数。
jQuery有$.proxy
,可以让你这样做:
$.each(obj, $.proxy(_foo, this));
或使用原生.bind()
方法。
$.each(obj. _foo.bind(this));
本机.forEach()
允许您将this
值作为第二个参数传递。但由于您没有Array或类似数组的对象,因此无法直接使用它。
答案 1 :(得分:0)
使用$ .proxy()将自定义上下文传递给函数调用
var obj = {
"flammable": "inflammable",
"duh": "no duh"
};
$.each(obj, $.proxy(_foo, this));
function _foo(key, value) {
console.log(this);
alert(key + ": " + value);
}
答案 2 :(得分:0)
您可以使用javascript bind()函数,检查browser support(ie9及以上)。
var obj = {
"flammable": "inflammable",
"duh": "no duh"
};
$.each( obj, _foo.bind(obj));
function _foo (key, value) {
console.log(this);
//alert( key + ": " + value );
}