2013-06-30 4 views
2

질문이 하나 있습니다. 이 메소드가 객체를 반환하는 이유는 무엇입니까? 내 코드의 다른 부분에서는 각 방법을 사용할 수 없습니다.메서드 대신 배열 객체가 반환됩니다.

objectToArrayOfObjects: function (obj, additionalProperties) { 
    var arrayOfObjects = []; 
    for (var name in obj) { 
     if (obj.hasOwnProperty(name)) { 
      var generatedObject = {name: name, value: obj[name]}; 
      arrayOfObjects.push(_.extend(generatedObject, additionalProperties)); 
     } 
    } 
    console.log(typeof arrayOfObjects); // return object 
    return arrayOfObjects; 
}, 
+2

'typeof [] === 'object';'배열은 기본적으로 JavaScript의 객체이기 때문에. – Oleg

답변

5

모든 너무 typeof 반환 object, 자바 스크립트에서 Object에서 상속됩니다. 메서드를 사용하면이 배열을 반환하므로 다음을 사용하여 확인할 수 있습니다. console.log(arrayOfObjects instanceof Array)

+1

이상 - 다른 프레임에서 오는 배열을 생각해 보면 위의 예는 false가되지만 대신 생성자 이름을 보면 ok입니다. 'Object.prototype.toString.call (arrayOfObjects) ==='[object Array] '' – andlrc

+0

또는 그 문제에 대해'arrayOfObjects.constructor === Array' 또는'/array/i.test (arrayOfObjects.constructor)' – KooiInc

-1

$ .each 메서드를 사용하여 개체를 반복 할 수 있습니다.

+0

이것은 질문에 대답하지 않습니다. 또한 두 줄의 코드에서 수행 할 수있는 작업에 대해 jQuery를 사용할 필요가 없습니다. – Oleg

관련 문제