我正在使用类似于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;
}
答案 0 :(得分:2)
尝试使用res = connect.call(this)
代替res = connect()
。