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]);
}