2013-03-13 6 views
1
function unit(){ 
    this.html=$('<div></div>'); 
    this.html.click(this,function(e){ 
     e.data.move(e.data.x,e.data.y); 
    }); 
} 

$('#factory').click(function(){ 
    unit(); 
} 

자바 스크립트에서 OOP를 배우려고합니다. 여기 제가 연습을 위해 만든 전쟁 게임의 유닛을위한 "클래스"가 있습니다. 팩토리가 클릭 될 때마다 새로운 단위가 생성됩니다. 그러나 이전 단위를 클릭하여 이동할 때 가장 새로운 단위는 항상 이동하는 단위입니다. 그래서 기본적으로 e.data은 항상 클릭 한 것이 아닌 최신 단위에 해당합니다. e.data이 클릭 된 단위와 항상 일치하도록하려면 어떻게해야합니까?jQuery 메서드에 객체 전달하기

+3

는'this'가 window''에 대한 참조입니다;

가 할, 새로운 객체를 생성하고 객체 this 참조를 만들려면 '. 지금 당장은 클릭 할 때마다'window.html'을 덮어 쓰고 있습니다. –

+0

감사합니다. 이로 인해 문제가 해결되었습니다. 답변으로 게시하면 답변을 수락합니다. –

답변

2

this은를 사용하여 unit();을 호출하지 않는 경우 window에 대한 참조입니다. 지금 당장은 클릭 할 때마다 window.html을 덮어 쓰고 있습니다. 당신이) (`단위를 호출하는`new`를 사용하지 않는 경우

new unit(); 
+0

['.apply'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply)를 사용하여'this'를 원하는대로 변경할 수 있습니다. –