execute(function()
{
this.a = 6;
});
function execute(func)
{
func();
}
Ваш вызов функции как func();
и по умолчанию без указания контекста this
будет преобразован в глобальный контекст, который в браузере равен window
. Здесь можно использовать три параметра.
make this
local
var that = this;
execute(function()
{
that.a = 6;
});
Теперь that
указывает на правильный this
.
привязка this
область действия к функции
execute((function()
{
this.a = 6;
}).bind(this));
Это свяжет правильную / ожидаемую область действия this
с вашей функцией. Обратите внимание, что Function.prototype.bind
является ES5 и сломает старые браузеры. _.bind
- разумная альтернатива кросс-браузерной обработки.
редактировать, выполнить
function execute(f, context) {
f.call(context);
}
execute(function() {
this.a = 6;
}, this);
Передача контекста в качестве дополнительного параметра для выполнения. Затем execute вызовет Function.prototype.call
, чтобы убедиться, что функция вызывается с нужным контекстом