[javascript] Prototype을 사용하여 자바 스크립트에서 객체의 모든 속성을 반복합니까?

Prototype JavaScript 프레임 워크를 사용하여 객체의 모든 속성을 반복하는 방법이 있습니까?

상황은 다음과 같습니다. JSON에서 다음과 같은 AJAX 응답을 받고 있습니다.

{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

변수에 대한 json 응답을 평가 response하면 response.barobj객체의 각 속성을 반복하여 어떤 인덱스가 참인지 거짓인지 확인할 수 있기를 원합니다 .

프로토 타입은 모두가 Object.keys()하고 Object.values()있지만 이상하게도 간단하지 보인다 Object.each()기능을! Object.keys () 및 Object.values ​​()의 결과를 가져 와서 하나를 반복하면서 다른 하나를 상호 참조 할 수 있지만, 적절한 방법이 있다고 확신하는 해킹입니다!



답변

먼저 개체 리터럴을 프로토 타입 해시로 변환해야합니다 .

// Store your object literal
var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

// Iterate like so.  The $H() construct creates a prototype-extended Hash.
$H(obj).each(function(pair){
  alert(pair.key);
  alert(pair.value);
});


답변

여기서 프로토 타입이 필요하지 않습니다. JavaScript에는 for..in루프 가 있습니다. 당신이 확실하지 엉망 아무도 그 경우 Object.prototype, 확인하지 hasOwnProperty()뿐만 아니라, 즉,

for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
        doSomethingWith(obj[prop]);
}


답변

키를 반복하고 대괄호를 사용하여 값을 가져와야합니다.

참조 : 자바 스크립트 개체의 속성을 어떻게 열거합니까?

편집 : 분명히 이것은 질문을 복제합니다.


답변