자바 스크립트에는 동일한 개체의 다른 속성을 참조하는 기본 제공 방법이 없습니다. 임의의 속성에 대해이 작업을 수행 할 수없는 이유는 충분합니다. 따라서 this
에 올바른 개체 값이 있는지 확인하거나 적절한 개체 참조를 자신이 어딘가에 저장할 필요가 있습니다.
다음은 싱글 톤 객체에 대해 잘 작동하는 자신을 참조하는 개체를 저장하는 방법입니다 :
let myObj = {
text: 'abcd',
index: (req, res)=>{
console.log(myObj.text)
}
}
module.exports = myObj;
당신이 .index()
항상에 방법으로 적절하게 호출되는 것을 알고 경우 module.exports
(이 일반적인 경우), =>
정의를 사용하지 않고 보통 function
정의를 사용하고 (이는 항상 메소드 선언에 사용되어야 함) this
이 원하는 값을 갖습니다.
module.exports = {
text: 'abcd',
index: function(req, res) {
console.log(this.text)
}
}
이 이렇게 한 .index()
지수가 호출 될 때 작동합니다
let myModule = require('myModule');
myModule.index(req, res);
사람들은 화살표 구문와 사랑에 빠지게하고 메소드 정의에 사용되지 거의 안 잊지하는 경향이 왜냐하면 메소드에 문제를 일으키는 호스트 객체에 this
을 설정하지 않기 때문입니다. 대신 개체의 메서드에 대해 function
정규 정의를 사용하십시오.
화살표 기능은 일반적으로 콜백 사용자 환경에서 this
값에 액세스 할 수 있도록하려면 콜백 함수에 매우 유용하다 (this
의 어휘 값이라고합니다). 다음은 몇 가지 유용한 예는 다음과 같습니다
class Timer {
delay(t, cb) {
this.timer = setTimeout(() => {
// preserve this value inside a callback
this.timer = null;
cb();
})
}
}
또는 다른 한편으로
// preserve this value inside a callback
let filtered = myArray.filter(item => {
return item.id !== this.master.id;
});
, 당신은 그 보통의 개체 값을 대체하기 때문에 방법에 대한 화살표 선언을 사용하지 않으려는 거의 결코
this
을 입력하고
this
의 어휘 값으로 바꿉니다.
를 통해 접근 시도/web/JavaScript/Reference/Functions/Arrow_functions)에 대한 정보를 제공합니다 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this). –
코딩하는 동안 발견 된 사례를 통해 모범 사례를 배울 수 있습니다. D 나를 상기시켜 주셔서 감사합니다. @FelixKling –
완전히 다른 질문이되도록 질문을 편집 할 때 스택 오버플로가 잘 작동하지 않습니다. 원래의 질문은 내가 대답 한'index'의 정의를위한 화살표 문법을 포함하고 있습니다. 제 대답을 쓴 후 질문을 편집 할 때,이 질문/답변의 요점을 완전히 망칠 수 있습니다. 하지 마세요. 나는 당신이 당신이 원래 질문했던 것과 같은 방식으로 당신의 질문을 되돌려 주어 답변들이 여전히 관련성이 있다고 제안 할 것입니다. 추가 정보를 요청하려면 의견을 통해 정보를 얻을 수 있는지 또는 새로운/다른 질문을해야하는지 확인하십시오. – jfriend00