Javascript делегат - PullRequest
       1

Javascript делегат

2 голосов
/ 29 сентября 2011

У меня следующий код

function createDelegate(object, method)
{
    var shim =  function()
    {                   
         method.apply(object, arguments);
    }
    return shim;
}


this.test = 3;   
var pAction = {to: this.test}
this.tmp = createDelegate(this, function()
{
              print("in: " + pAction.to); 
              return pAction.to;
});
print("out: " + this.tmp());

Но по какой-то причине я получаю следующий результат

in: 3
out: undefined

Кто-нибудь знает причину этого?

1 Ответ

6 голосов
/ 29 сентября 2011

При создании делегированной функции вы должны вернуть результат старой функции:

function createDelegate(object, method)
{
 var shim =  function()
 {                  
    return method.apply(object, arguments);
 }
 return shim;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...