this._get не является функцией - javascript oop и prototypes - PullRequest
0 голосов
/ 23 января 2012

Я использую что-то похожее на NodeJS, называемое bondi, оно основано на движке Firefox js. По сути, я получаю эту ошибку, и я полагаю, что это связано с тем, как я ссылаюсь на "this" в функции .Get ниже.

В основном есть инструмент под названием SFtpClient. У него есть метод «Получить», чтобы вывести список содержимого папки, но я хочу изменить прототип для этого, добавив включаемый файл. Мне нужно изменить это так, чтобы это a / повторяет несколько раз в случае сбоя, и b / имеет рекурсивную функцию вывода списка папок.

Итак, я использовал прототип, чтобы изменить его - переместился .Get в ._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 Ответ

2 голосов
/ 23 января 2012

Попробуйте res = connect.call(this) вместо res = connect().

...