나는 clock이라는 객체를 가지고 있습니다.OOP에 대한 몇 가지 질문
나는 시간이라는 객체를 가지고있다.
내 시간 메서드 내에서 this.propertyName을 사용하면 내 시계 개체에 속성이 적용됩니다. 하지만 if/else 문 (시간 메서드 자체 내에 있음)이있는 경우, 예를 들어 전에 값을 할당해야 할 필요가 있습니까?
if(t.getHours() >= 12){
this.ap = "AM";
}else{
this.ap = "PM";
}
따라서 this.ap = "hi"와 같은 간단한 값을 사용하면 정상적으로 작동합니다. 그것은 내 물건에 물건을 준다. 위와 같이 선언문을 작성하면 속성이 정의되지 않습니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
또 다른 빠른 질문은 나만의 개체를 사용하기 시작한 것이기 때문에. 3 개의 개별 메서드가있는 개체가 있고 1 메서드 내에서 선언 된 모든 메서드의 값을 사용하려면 개체의 속성으로 할당하면이 작업을 수행 할 수 있습니다. 내가 맞습니까?
그래서 하나의 메서드에서 var property = ""를 사용하면 다른 메서드에서이 메서드에 액세스하는 유일한 방법은 반환하는 것입니다. 그러나 객체에 속성을 설정하면 해결됩니다. 나는 이것으로 주위를 실험 할 수 있다는 것을 알았지 만, 나는 적절한 방법을 알고있을 것입니다.
편집 : 예를 들어 보겠습니다. 분명히 나는 오해하고있다. 메서드 내에서 속성을 정의하는 것처럼 보이지 않습니다.
var MyObject = function() {
var self = this;
self.someProperty = "foo";
self.someMethod() {
self.someProperty = "bar";
}
}
var anInstance = new MyObject();
console.log(anInstance.someProperty); // foo
anInstance.someMethod();
console.log(anInstance.someProperty); // bar
이 this
이 따라 일어날 수있는이 될 당신이 예상하는 것보다 다른 뭔가되는 문제를 피할 수 :
var clock = {};
clock.test1 = "test 1.";
clock.time = function(){
clock.test = "test 2.";
if(t.getHours() >= 12){
clock.ap = "PM";
}else{
clock.ap = "AM";
}
}
alert(clock.test1); //success
alert(clock.test); //returns undefined
alert(clock.ap); //returns undefined
코드를 더 표시해야합니다. 'this '의 바인딩은 JavaScript에서 다소 까다 롭습니다. 일반적인 해결책은'that' 또는'self' 또는 당신의 객체와 비슷한 것을 추가하고 객체를 생성 할 때'this'를 할당하는 것입니다. 그렇게하면 항상 객체 자체에 대한 참조가 생깁니다. –
'=>'은 구문 오류이므로'> ='이어야합니다. 't.getHours'에서't'는 무엇입니까? ('getHours'는't.getHours()'와 함께 호출되는 함수가 아닙니까?) – nnnnnn
^실제로 이것을 가리켜 주셔서 감사합니다. getHours를 함수로 입력한다는 의미였습니다. –