如何在javascript类回调中绑定此值的正确值?

如何在javascript类回调中绑定此值的正确值?,javascript,ecmascript-6,es6-class,Javascript,Ecmascript 6,Es6 Class,我必须使用名为self的变量来引用此。这样做不对吗?如果没有,我怎么做 这样做不对吗 不,显然这种方法没有错,它只是一种保持对这个对象的引用的方法 但解决这个问题有一些替代方法: 1.使用bind方法。 bind()方法创建一个新函数,该函数在调用时具有 此关键字设置为提供的值,并具有给定的 调用新函数时,将在任何函数前面提供参数 2.使用箭头功能。 在箭头功能之前,每个新功能都定义了自己的此值 例如,对于构造函数,此可以是一个新对象 职能人员(年龄){ 这个。年龄=年龄; console.l

我必须使用名为
self
的变量来引用
。这样做不对吗?如果没有,我怎么做

这样做不对吗

不,显然这种方法没有错,它只是一种保持对
这个
对象的引用的方法

但解决这个问题有一些替代方法:

1.使用
bind
方法。 bind()方法创建一个新函数,该函数在调用时具有 此关键字设置为提供的值,并具有给定的 调用新函数时,将在任何函数前面提供参数

2.使用
箭头
功能。 在
箭头
功能之前,每个
新功能
都定义了自己的

例如,
对于构造函数,此
可以是一个新对象

职能人员(年龄){
这个。年龄=年龄;
console.log(this);
}
让人=新人(22)

在setTimeout中使用arrow函数

当我把
放在
}
@RanjithRamachandra旁边时,我得到了一个语法错误,我编辑了答案。我认为你不能。在arrow中绑定(这个)function@AmitWagner,是的,对不起,我弄错了。非常感谢您的详细解释
class SomeClass {
  constructor() {
     this.x = 0;
  }
  getSomething(inputVal) {
   let self = this;
   return new Promise((resolve, reject) => {
    setTimeout(function(){
     if(inputVal){
       self.x = 1;
       resolve();
     }
     else{
       self.x = -1;
       reject();
     }

   }, 10);
 });
}
getSomething(inputVal) {
        return new Promise((resolve, reject) => {
            setTimeout(function(){
                if(inputVal){
                    this.x = 1;
                    resolve();
                }
                else{
                    this.x = -1;
                    reject();
                }

            }.bind(this), 10);
        });
 }
class SomeClass {
    constructor() {
        this.x = 0;
    }
    getSomething(inputVal) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                if (inputVal) {
                    console.log(this.x);
                    this.x = 1;
                    resolve();
                }
                else {
                    this.x = -1;
                    reject();
                }

            }, 10);
        });
    }
}

const test = new SomeClass();
test.getSomething(true);