Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取错误“;TypeError:无法读取属性';doFileHasCorrectFileExtension';“未定义”的定义;从ES6类方法_Javascript_Node.js_Typescript_Class_Ecmascript 6 - Fatal编程技术网

Javascript 获取错误“;TypeError:无法读取属性';doFileHasCorrectFileExtension';“未定义”的定义;从ES6类方法

Javascript 获取错误“;TypeError:无法读取属性';doFileHasCorrectFileExtension';“未定义”的定义;从ES6类方法,javascript,node.js,typescript,class,ecmascript-6,Javascript,Node.js,Typescript,Class,Ecmascript 6,我遇到了一个问题,其中出现了错误TypeError:无法读取未定义的属性“doFileHasCorrectFileExtension” 当我创建文件或文件夹时。我希望我的应用程序能够使用 方法doFileHasCorrectFileExtension没有未定义 为了解决我的问题,我创建了一个保存对象的变量 由类创建 const textFileWatcher=new FileExtensionMatcher(“文本文件”[ “txt”, ]); 我解决这个问题的第二次尝试是设置watcher变

我遇到了一个问题,其中出现了错误
TypeError:无法读取未定义的属性“doFileHasCorrectFileExtension”
当我创建文件或文件夹时。我希望我的应用程序能够使用 方法
doFileHasCorrectFileExtension
没有未定义

为了解决我的问题,我创建了一个保存对象的变量 由类创建

const textFileWatcher=new FileExtensionMatcher(“文本文件”[
“txt”,
]);
我解决这个问题的第二次尝试是设置watcher变量 (
textFileWatcher
在上一次尝试中)在全局对象中,因此它不会 把垃圾收集起来

const-watchers:FileExtensionMatcher[]=[];
观察者,推(
新的FileExtensionMatcher(“文本文件”[
“txt”,
])
);
//@类型脚本忽略
global.fileWatcher=观察者;
此外,为了诊断问题,我启动了脚本上的调试器并 我意识到,
这个
在方法
onFilesChanged
中没有定义

以下是我收到的完整错误消息:

PS C:\Users\ASD\Project\js\download-sort> typescript-node .\source\
Debugger attached.
[16:13:32] Started listening file watcher for Text files
[16:13:46] New Text Document (2).txt has been created at C:\Users\ASD\Downloads.
TypeError: Cannot read property 'doFileHasCorrectFileExtension' of undefined
    at C:\Users\ASD\Project\js\download-sort\source\FileExtensionMatcher.typescript:8:71
    at new Promise (<anonymous>)
    at __awaiter (C:\Users\ASD\Project\js\download-sort\source\FileExtensionMatcher.typescript:4:12)
    at C:\Users\ASD\Project\js\download-sort\source\FileExtensionMatcher.typescript:45:56
    at Array.forEach (<anonymous>)
    at onFilesChanged (C:\Users\ASD\Project\js\download-sort\source\FileExtensionMatcher.typescript:45:11)

您正在丢失正确的
this
,将其传递到
nsfw
-使用
this.onFilesChanged.bind(this)

我通过将函数
nsfw
的第二个参数更改为
(filesChanged)=>this.onFilesChanged(filesChanged)
解决了我的问题。下面是它在我的代码中的外观:

构造函数(名称:string,扩展名:string[]
{
this.Name=Name;
nsfw(“C:/Users/ASD/Downloads”,(filechanged)=>this.onFilesChanged(filechanged),{errorCallback:log.error})。然后((fileWatcher)=>
{
fileWatcher.start()。然后(()=>log(“开始侦听“+this.Name”的文件查看器));
});
this.onFilesChanged=this.onFilesChanged.bind(this);
extension.forEach((extension)=>this.extensions=extension);
}
问题是onFileChanged方法无法访问类环境,因为它绑定到
nsfw
函数对象。做我的修理工作,因为它
s是绑定到nsfw对象的箭头函数环境,而不是方法环境。

我仍然有错误。这是我的代码:我做错什么了吗?@ViniDalvino看看你的第二个参数,这就是正在发生的事情,而不是在另一个函数中