2012-01-23 14 views
0

私はbondiと呼ばれるNodeJSに似た何かを使用しています。これはFirefox jsエンジンでビルドされています。基本的に私はこのエラーを受けています。私は以下の.Get関数で "this"を参照しています。this._getは関数ではありません - javascript oopとprototypes

基本的にSFtpClientというツールがあります。それはフォルダの内容をリストするために "Get"のメソッドを持っていますが、インクルードファイルのドロップでこのプロトタイプを変更したいと思います。それが失敗すると、 a /再試行が数回、b/itに再帰的なフォルダリスト機能があるように変更する必要があります。

私はそれを変更するためにプロトタイプを使用しました。移動しました.Getに移動します。私は以下のコードを実行すると

Jan 23 04:51:34 beta bondi: === this._Get is not a function --- Prio(6) Result(0x0) File(/home/nwo/approot/include/sftpclientenh 

:私はエラーを取得するなぜ

は誰でも見ることができますか? おかげ

SFtpClient.prototype._Get = SFtpClient.prototype.Get; 
SFtpClient.prototype.Get = function(Folder, Retries){ 

    //defaults 
    if(!Retries) Retries = 5; 
    if(!Folder) Folder = "~/"; 

    //vars 
    var FileListing = []; 

    var connect = function(){ 
     //TODO JRF 19.01.2012 : re-enable this when bondi is fixed 
     // this.HomeDirectory.replace(/\/?$/, "/"); 
     FileListing = this._Get(Folder); 

     return true; 
    } 

    var i = 1; 
    do{ 
     var res = false; 
     try { 
     res = connect(); 
     }catch(e){ 
      Debug.LogInfo(e.message); 
     } 
     i++; 
     Server.Sleep(i*2000); 
    } while(res==false && i < Retries); 

    return FileListing; 
} 

答えて

2

res = connect.call(this)代わりのres = connect()を試してみてください。

+0

pop pop!それは動作します。どうもありがとうございました。すべてが意味をなさない+1 – Jason

+0

connect()に必要な引数があればどうなりますか?この場合ではなく、将来的には? – Jason

+0

'connect.call(this、arg1、arg2/* etc * /)'です。基本的に '.call()'は '()'より1つ多くの引数をとり、最初の引数は 'this'が何であるかを指示します。 –

関連する問題