jdfiddle:https://jsfiddle.net/2khtof8s/1/Uncaught (in promise) TypeError: Cannot read property 'someFunction' of undefined
となぜクラスでの短縮形関数の使用が "this"を未定義にするのでしょうか?
class TestClass {
doSomething(){
return Promise.resolve(this.someFunction('hello'))
}
someFunction(testVar){
return testVar;
}
}
let instance = new TestClass();
// throws error
Promise.resolve()
.then(instance.doSomething)
.then(console.log)
.catch(console.error);
// works
Promise.resolve()
.then(() => instance.doSomething())
.then(console.log);
// works
Promise.resolve()
.then(function(){return instance.doSomething()})
.then(console.log);
// works
function someFunc(){
return instance.doSomething();
}
Promise.resolve()
.then(someFunc)
.then(console.log);
最初Promise.resolveチェーンエラーを - 私たちは、誰もがこの動作に任意の洞察力を持っていない理由を理解していないようですか?私たちが知る限り、相違はないはずです。
可能な複製を[正しい\ 'をアクセスする方法この\ 'コールバックの内部?] (http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback) –