this._get不是函数--javascript oop和prototypes

时间:2012-01-23 05:00:16

标签: javascript oop prototype

我正在使用类似于NodeJS的东西,名为bondi,它建立在Firefox js引擎上。基本上我收到了这个错误,我相信这是由于我在.Get函数中引用“this”的方式下方。

基本上有一个名为SFtpClient的工具。它有“获取”的方法,列出文件夹的内容,但我想通过下拉包含文件更改原型。我需要改变它以便它 a /在失败时重试几次,并且它有一个递归文件夹列表功能。

所以我用原型来改变它 - 移动。获取._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;
}

1 个答案:

答案 0 :(得分:2)

尝试使用res = connect.call(this)代替res = connect()