如何在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);