Javascript 在jquery中调用对象方法每个循环范围问题?
所以我在说 未定义HandleGendClick 我假设这是一个范围问题,但我不确定如何在循环中引用回父对象…问题是这是调用click事件处理程序时的窗口 您可以这样做:Javascript 在jquery中调用对象方法每个循环范围问题?,javascript,jquery,Javascript,Jquery,所以我在说 未定义HandleGendClick 我假设这是一个范围问题,但我不确定如何在循环中引用回父对象…问题是这是调用click事件处理程序时的窗口 您可以这样做: My.Awesome.Obj = function() { return { // PUBLIC PROPERTIES legendObj: null, // PUBLIC METHODS init: function() {
My.Awesome.Obj = function() {
return {
// PUBLIC PROPERTIES
legendObj: null,
// PUBLIC METHODS
init: function() {
this.assignLegendClick();
},
assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = this.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
this.handleLegendClick();
});
})
},
handleLegendClick: function() {
console.log('*** handleLegendClick()');
},
EOF: null
};
}();
问题是,这是调用click事件处理程序时的窗口
您可以这样做:
My.Awesome.Obj = function() {
return {
// PUBLIC PROPERTIES
legendObj: null,
// PUBLIC METHODS
init: function() {
this.assignLegendClick();
},
assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = this.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
this.handleLegendClick();
});
})
},
handleLegendClick: function() {
console.log('*** handleLegendClick()');
},
EOF: null
};
}();
是的,这是一个范围界定问题:
My.Awesome.Obj = function() {
var obj = {
// PUBLIC PROPERTIES
legendObj: null,
// PUBLIC METHODS
init: function() {
obj.assignLegendClick();
},
assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = obj.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
obj.handleLegendClick(); // <=== replace this with obj
});
})
},
handleLegendClick: function() {
console.log('*** handleLegendClick()');
},
EOF: null
};
return obj;
}();
使用helper参数保留通常称为self或_self的范围
assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = this.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
this.handleLegendClick();
});
})
是的,这是一个范围界定问题:
My.Awesome.Obj = function() {
var obj = {
// PUBLIC PROPERTIES
legendObj: null,
// PUBLIC METHODS
init: function() {
obj.assignLegendClick();
},
assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = obj.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
obj.handleLegendClick(); // <=== replace this with obj
});
})
},
handleLegendClick: function() {
console.log('*** handleLegendClick()');
},
EOF: null
};
return obj;
}();
使用helper参数保留通常称为self或_self的范围
assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = this.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
this.handleLegendClick();
});
})
不需要调用obj.legendObj.find。。。在assignLegendClick函数中,因为此时“this”是对象。@Here and Now 78事实上,这取决于调用函数的方式:如果复制引用并在没有接收者的情况下调用它,这将确保它是obj。但在大多数情况下,我同意这是没有用的,这就是为什么我只提到我发表评论的地方,这是最重要的地方。@destroy you太快了,我还得等着才能接受!不需要调用obj.legendObj.find。。。在assignLegendClick函数中,因为此时“this”是对象。@Here and Now 78事实上,这取决于调用函数的方式:如果复制引用并在没有接收者的情况下调用它,这将确保它是obj。但在大多数情况下,我同意这是没有用的,这就是为什么我只提到我发表评论的地方,这是最重要的地方。@destroy you太快了,我还得等着才能接受!