4. [해결됨] TypeError: Cannot read property'setData'of undefined
장면
스스로 wx를 호출하고 있습니다.getSystemInfo({})일 때 개발 도구가 자동으로 코드를 완성합니다.success 리셋에서 이전의 쓰기 방법에 따라 호출
this.setData({ });
할 때 오류 보고: TypeError: Cannot read property 'setData' of undefined。
.관련 코드는 다음과 같습니다.
/**
* --
*/
onLoad: function (options) {
wx.getSystemInfo({
success: function (res) {
console.log(res);
this.setData({
system_info: res.brand,
});
},
fail: function (res) {
this.myShowError(" ")
},
complete: function (res) { },
})
},
이전 귀속 이벤트 호출
this.setData({ });
과 자세히 비교했을 때 호출 방식은 별 차이가 없었다.애플릿 개발에 막 접촉했기 때문에 success: function (res) {};
이런 문법은 본 적이 없기 때문에 문제가 여기에 있는 것 같다고 추측했다.다음과 같은 방법으로 정상적으로 사용할 수 있다. /**
* --
*/
onLoad: function (options) {
wx.getSystemInfo({
success: (res) => {
console.log(res);
this.setData({
system_info: res.brand,
});
},
fail: function (res) {
this.myShowError(" ")
},
complete: function (res) { },
})
},
솔루션
success: function (res) {
this.setData({})
}
다음과 같이 변경되었습니다.
success: (res) => {
this.setData({})
}
[원인 분석] 왜죠?두 가지 문법인this가 가리키는 방향이 다르기 때문이다.
success: (res) => {
console.log("(res) => { } :" + this);
},
--------------
success: function (res){
console.log("function (res) :" + this);
},
비교 분석:
function (res) :undefined
(res) => { } :[object Object]
function (res)
를 쓸 때 this
는 undefined
에 정의되지 않았다.(res) => { }
를 쓸 때this
는 Object
이다.[분석 총결] 1. 만약에 함수를 대상으로 하는 방법이 호출된다면this는 이 상급 대상, 즉 호출 방법의 대상을 가리킨다.2. 구조 함수 중의this라면this는 새로 만든 대상 자체를 가리킨다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.