2013-07-11 4 views
0

며칠 전에 OOP를 시작 했으므로 나는 경험이 없습니다. 그 클래스를 사용하는 모든 객체에 영향을주기 위해 클래스 속성의 값을 변경할 수있는 기회가 궁금합니다.클래스 변수의 값 변경

예 :

function Balloon(ID){ 
    this.ID = ID; 
    this.speed = 1; 
} 

의 내가 5 풍선 객체가 있다고 가정 해 봅시다. 그리고 지금은 루프를 사용하지 않고 의 속도 인 값을 모두 2로 변경하려고합니다.

+0

"클래스 속성"이 아닙니다. ** instance ** 속성은 각 인스턴스 객체에서 독립적으로 설정되기 때문에 ** 인스턴스 ** 속성입니다. – Pointy

+1

관심이있는 풍선 두 개를 반복하지 않고 원하는 것을 성취 할 수있는 방법이 있습니다. 결국 5 개의 풍선 중에서 2 개의 풍선 중 어느 것을 변경해야하는지 알 필요가 있습니다. "구성원"(Trogvar의 답변 참조) 클래스를 사용하여 5 개의 풍선을 모두 변경하거나 개별적으로 변경해야합니다. –

+0

Balloon 클래스의 모든 오브젝트에 대해 속도 값을 2로 변경하려면 @Neal에 대해 명확히 설명하십시오. 그는 내 대답에 대해 나에게 떨어 뜨렸다. 감사합니다 :) – Trogvar

답변

3

prototype을 사용할 수 있습니다. 아래 예를 확인하십시오.

function Balloon(ID){ 
    this.ID = ID; 
} 

Balloon.prototype.speed = 1; 

b1 = new Balloon(1); 
b2 = new Balloon(10); 

console.log(b1.speed); // outputs 1 
Balloon.prototype.speed = 15; 
console.log(b2.speed); // outputs 15, which is now also 15 for all other Balloon instances 
+0

아,하지만 OP는 풍선의 속도를 ** ** ** 변경하려고합니다. ** 모두 ** 5. (죄송 합니다만 나에게서'-1') – Neal

+0

나는 당신이 그의 진술을 잘못 해석했다고 생각합니다. 그것을 다시 읽으십시오. 이 부분은'모든 물건에 영향을주기 위해 클래스 속성의 가치를 바꿀 수있는 기회이다. ' 그리고 그의 의견에있는'2' 부분은 새로운 속도 값과 관련이 있습니다. – Trogvar

+0

정확하게 읽었습니다. 컨텍스트를 유지하지 않고 있습니다 ** 2 **에서 속도 값을 변경하려고합니다 **. 그리고 당신이 그의 포스트의 시작에주의를 기울인다면 그는 ** 모든 ** 물체에 대해 그것을하고 싶어합니다. – Trogvar

0

그럼 당신은 객체의 로컬 정적 변수를 편집해야합니다 :

var Balloon = (function(){ 

    var speed = null; 

    function Balloon(ID){ 
     this.ID = ID; 
     speed = 1; 
    } 

    return Balloon; 

})(); 

문제는 지금 모든 풍선 같은 속도를 공유하는 것입니다! AHH!
그것은 전혀 좋지 않습니다 ... 그리고 속도를 바꾸려면 getter/setter를 만들어야합니다. 당신이 정말로 필요로하지 않는 것.

그래서 - 각 풍선을 허용하면서 기술적으로가 서로 다른 속도를 가지고, 에게 동시에 모든Balloon 형 객체의 속도를 변경하는 유일한 결론은 각 Balloon 객체로 이동 (속도를 변경하는 것입니다 죄송합니다)

+0

괜찮아요, 그래서 루프를 사용할 것입니다. 고맙습니다! – mkkrolik

+0

기꺼이 도와 드리겠습니다. @ user1769428 :-D – Neal

+0

Hehee ... 그리고 인간 이름으로 로그인을 변경합니다 :) – mkkrolik