新的es6类允许您this在方法内部使用self引用变量。 但是,如果类方法具有子函数或回调,则该函数/回调不再有权访问自我引用变量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 } } }
有什么解决办法吗?
您有以下选择:
1)使用 箭头 功能:
class ClassName { // ... aMethod(){ let aFun = () => { this.dir;// ACCESS to class reference of this } } }
2)或bind()方法:
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 } } }
本文介绍有关thisJavaScript中的和箭头功能的必要详细信息。