Поведението на "this", когато се извиква функция bar
, ме озадачава. Вижте кода по-долу. Има ли някакъв начин да уредите „това“ да бъде обикновен екземпляр на стар js обект, когато bar се извиква от манипулатор на кликване, вместо да бъде html елемент?
// a class with a method
function foo() {
this.bar(); // when called here, "this" is the foo instance
var barf = this.bar;
barf(); // when called here, "this" is the global object
// when called from a click, "this" is the html element
$("#thing").after($("<div>click me</div>").click(barf));
}
foo.prototype.bar = function() {
alert(this);
}
"this" is the foo instance
. Следният jsfiddle(jsfiddle.net/yY6fp/1) демонстрира, чеthis
вthis.bar()
се оценява наwindow
(глобален) обект. - person Kevin Meredith   schedule 02.01.2014