Мне действительно нравится функция Ext * createDelegate
, которая позволяет вам установить значение this
для любой функции при ее создании.
Вот менее функциональная версия createDelegate
, которую можно включить вВаша страница:
Function.prototype.createDelegate = function(thisObj) {
var method = this;
return function() {
return method.apply(thisObj || window, arguments);
};
}
И вот как вы можете использовать это в своем примере, никогда не устанавливая this
для переменной:
var o = function() {
this.a = 1;
$('html').click(function() {
alert(this.a);
}.createDelegate(this));
}
new o();
Полная версия Ext's createDelegate
давайте передадим параметры в качестве второго аргумента, и они могут использоваться вместо, вставляться или добавляться в список аргументов, которые будут регулярно передаваться в функцию, для которой вы создаете делегат