내 응용 프로그램에는 응용 프로그램의 여러 위치에 여러 속성이 설정된 개체가 있습니다.개체의 속성에 도달하기
제 프로토 타입 함수 중 하나에는 타이머를 업데이트하는 간격으로 실행되는 함수가 있는데 그 함수 (this.)에서 theTime을 설정해야합니다. 문제는 이것이 발생하지 않는다는 것입니다. 이유는 그 이유는 this.theTime
이 개체 대신 함수 자체를 가리키고 있기 때문입니다.
다음은 내 코드의 두 가지 버전이며 두 가지 버전이 모두 작동하지 않습니다. 나 한테 요령있어?
// 1.
function changeTime() {
this.theTime = setTime(time);
time.setSeconds(time.getSeconds()+1);
p1.html(this.theTime);
}
interval = setInterval(changeTime(), 1000);
// 2.
function changeTime(theTime) {
theTime = setTime(time);
time.setSeconds(time.getSeconds()+1);
p1.html(theTime);
}
interval = setInterval(function() { changeTime(this.theTime); }, 1000);
...
너무 좀 더 명확하게는, 함수는 위의 타이머를 업데이트합니다. (예 :00:00:01
->
00:00:02
) 초마다, 나는
this.theTime
이 시간으로 업데이트하고 싶습니다.
타이머가 멈 추면 (다른 프로토 타입 함수에서 발생 함) 타이머가 멈춘 시간을 볼 수 있기를 원합니다. 그러나 지금은 this.theTime
이 기본값입니다. 즉 위의 함수는 기본값이 아닙니다. objects 속성을 업데이트하십시오. 대신 위 함수에서 this.theTime
은 지역 변수 여야합니다.
참고 : setTime()
은 위의 함수와 동일한 프로토 타입 함수에있는 다른 함수입니다.
무엇을 'this'로 설정해야합니까? 귀하의 코드는 작동하지 않지만이를 고치는 방법을 정확하게 말하는 것은 불가능하다는 것을 알지 못합니다. 'this' 값은 각 함수 호출시 설정됩니다; 그것은 어떤 기능에서도 영구 고정 된 것이 아닙니다. – Pointy
'setTime()'이 당신이 작성한 함수이거나 JS 함수'Date.setTime()'을 사용하려고합니까? –
@JasonCraig 나는 몇 가지 더 정리할 질문을 좀 더 편집했습니다. –