2013-10-03 4 views
0

나는 객체를 가지고 있으며, 그 객체를 반복하여 그 속성의 모든 값을 인쇄하고 싶습니다. 내 문제는 해당 메서드 중 하나에 의해 반환 된 값을 인쇄 할 때 메서드 반환해야하는 값 대신 메서드의 코드를 가져옵니다. 내가 액세스 구문을 오타 만들고있어,하지만 난 그것을 알아낼 수 없습니다.JavaScript에서 객체의 메소드에 의해 반환 된 값에 접근하기

function Dog (breed,sound) { 
    this.breed = breed; 
    this.sound = sound; 
    this.bark = function(){ 
     alert(this.sound); 
     return this.sound; 
    }; 
} 

var x = new Dog("Retriever",'woof'); 
x.bark(); // Test: 'woof' 

for (var y in x) { 
    document.getElementById("results").innerHTML +="<br/>"+x[y]; 
} 
/* x[y] when y is 'bark' returns the method's code, 
    but I'm looking for the value. */ 

JSFiddle : 당신을 위해이 작품 같은 http://jsfiddle.net/nysteve/QHumL/4/

+0

이 함수 그리고 당신은 아직도 혼동하고있어 말 –

+0

에()를 호출해야하는, 그래서 방법은 루프 - 그리고 밖으로 인쇄 - 특수이 객체의 속성을 통해 루프가 없기 때문에 일부 속성이 값을 반환하는 메서드 일 때의 값? – brooklynsweb

+0

함수의 this (x [y] instanceof)를 사용 하시겠습니까? x [y]() : x [y]); –

답변

1

겠습니까 뭔가? 여기에있는 아이디어는이 "나무 껍질"속성을 좀 더 일반화하여 다른 동물에도 사용할 수 있도록하는 것입니다.

function Dog (breed,sound) { 
    this.breed = breed; 
    this.sound = sound; 
    this.noise = alertNoise(this); 
} 

function alertNoise(animal) { 
    alert(animal.sound); 
    return animal.sound;  
} 

var x = new Dog("Retriever",'woof'); 
//x.bark(); // 'woof' 

for (var y in x) { 
    document.getElementById("results").innerHTML +="<br/>"+x[y]; 
} 
// x[y] when y is 'bark' returns the property-function's code, but I'm looking for the value. 
+0

그러나 이것은 자신의 사운드를 얻기 위해서만 함수를 호출합니다 ... –

+1

왜 이것을 할 지 이해할 수 없지만 그것은 OP의 예에서 수피 함수가하는 것과 정확히 같습니다. – Ant

관련 문제