2012-12-09 5 views
0

저는 자바 스크립트와 클래스 및 메서드의 작동 방식이 새롭다는 것을 혼란스럽게합니다.클래스의 변수를 사용하는 클래스 메서드를 호출하는 자바

기본적으로 나는 다음과 같은 코드를 가지고 : 내가하고 싶은 것은 내 코드에서 컨테이너의 값을 사용하여 컨테이너 내에서 정의 된 함수를 사용하여 다른 곳에

function container(x, y, z) { 
    this.x = x; 
    this.y = y; 
    this.z = z; 

    this.sumUp = function addUp(x, y, z) { 
    var a = x + y + z; 
    }; 
} 

. 이 일을 실제로 어떻게 수행합니까? 그런

container1 = new container (1, 2, 3); 
container.sumUp(this.x, this.y, this.z); 

또는 무언가의 라인을 따라

뭔가. 나는 매우 혼란스럽고 나는 모든 일이 잘못 될 것이라고 생각합니다.

답변

2

나는이 같은 somwthing하려는 생각 :

function Container(x, y, z){ 
    this.x = x; 
    this.y = y; 
    this.z = z; 

    this.sumUp = function addUp(x, y, z){ 
    alert(this.x + this.y + this.z); 
    }; 
} 

container_instance = new Container(1, 2, 3); 
container_instance.sumUp(); 

하지만 권 해드립니다 :

function Container(x, y, z){ 
    this.x = x; 
    this.y = y; 
    this.z = z; 
} 

Container.prototype.sumUp = function addUp(x, y, z){ 
    alert(this.x + this.y + this.z); 
}; 

container_instance = new Container(1, 2, 3); 
container_instance.sumUp(); 

즉, (짧은) 작동 방법은 다음과 같습니다

자바 스크립트 당신에 objects 있습니다. 해시와 같습니다 :

var obj = { 
    'a': 1, 
    'b': 2, 
    'c': 3 
}; 

그리고 당신은 키에 의해 값을 설정 받거나 할 수 있습니다

alert(obj.a); // alerts 1 
alert(obj['a']); // same thing 
obj['c'] = 4; 

귀하의 경우 Container에서이 개체를 구축 할 것입니다 기능입니다. new Container(1, 2, 3);을 수행하면 빈 개체가 만들어지고 해당 개체의 컨텍스트에서 함수가 실행됩니다.

+1

왜 sumUp/addUp는 사용되지 않는 매개 변수를 사용해야합니까? 무의미한 것 같습니다. – johusman

+0

@johusman 확실히 그들은 상처를 입지 않습니다. –

+0

'new'도 객체의'[[prototype]]'을 설정합니다. –

1
function Container(x, y, z){ 
    this.x = x; 
    this.y = y; 
    this.z = z; 
} 
// There is no point to put parameters there since they are already instance variables. 
Container.prototype.sumUp = function addUp(){ 
    alert(this.x + this.y + this.z); 
}; 

container_instance = new Container(); 
container_instance.sumUp(); 
관련 문제