新的es6类允许您在方法内部使用自引用变量this
。
但是,如果类方法具有子函数或回调,则该函数/回调不再具有访问自引用变量this
class ClassName {
constructor(dir){
this.dir = dir;
fs.access(this.dir, fs.F_OK | fs.W_OK, this.canReadDir);//nodejs fs.access with callback
}
canReadDir(err){
this.dir;// NO ACCESS to class reference of this
}
//OR
aMethod(){
function aFunc(){
this.dir;// NO ACCESS to class reference of this
}
}
}
对此有什么解决办法吗?
在aMethod()中放置一个对dir的引用,然后在aFunc中使用它,类似于
aMethod() {
var tempDir = this.dir;
aFunc() {
console.log(tempDir);
}
}
您有以下选项:
1)使用箭头函数:
class ClassName {
// ...
aMethod(){
let aFun = () => {
this.dir;// ACCESS to class reference of this
}
}
}
2)或bind()
方法:
class ClassName {
// ...
aMethod(){
var aFun = function() {
this.dir;// ACCESS to class reference of this
}.bind(this);
}
}
3)将this
存储在专用变量中:
class ClassName {
// ...
aMethod(){
var self = this;
function aFun() {
self.dir;// ACCESS to class reference of this
}
}
}
本文描述了JavaScript中有关This
和箭头函数的必要细节。
我正在使用geopy,有一个关于为什么会出现错误的问题。 此代码示例来自github提供的代码示例。它的工作原理如前所述 下面的代码为什么会提供错误?这背后的原因是什么? 第二个代码提供的错误是:
我有接口 有没有可能把方法变成可选的?
我想了解回调的概念。我在互联网上搜索过关于回调的内容,有很多使用接口的示例,其中一个类正在使用该接口调用另一个类的方法。但是我仍然不能理解回调的主要概念,使用回调的目的是什么?
我想单击按钮将添加到中,但未调用适配器的实现方法。 这是我的代码: CourseDetailAdapter。班 我想为输入数据添加layout,所以我不确定是否正确
我有一个endpoint,我需要从类内部的方法调用它。 控制器有。如何从该方法调用此控制器?