2013-12-24 2 views
0

underscore.js _.map 기능과 관련하여 매우 이상한 동작이 발생합니다.Underscore.js 맵이 새 오브젝트와 함께 작동하지 않습니다.

마치 함수 안에 "새 항목을 만들려고 할 때"오류가 발생하는 것처럼 보입니다. 그러나 함수 내부에 새로운 객체가 없으면 예상대로 작동합니다. 내가 여기서 뭔가를 놓치고 있니?

다음은 작동하지 않습니다 (즉 아무 것도 인쇄하지 않음). 그것은 새 개체를 만든 후 실패 할 것 같다

var test = { a: "test" }; 

var foo = _.map(data.A, function (dataItem) { 
    var a = new test(); 

    console.log(a); 
    return a; 
}); 

을하지만이 작업을 수행합니다

var test = { a: "test" }; 

var foo = _.map(data.A, function (dataItem) { 
    var a = dataItem; 

    console.log(a); 
    return a; 
}); 

그리고 위의 로그 파일에 기록 data.A 배열에있는 모든 항목을.

+1

'Object.create (test)'가 아니고'new test'이어야합니다. – rab

답변

1

코드가이 라인에 의해 발생 작동하지 않는 이유 :

var test = { a: "test" }; 

var a = new test; 

을 당신은 함수로 테스트를 선언해야 :

var test = function() { 
    return { a: "test" }; 
} 

에서 new operator을 주문하십시오.

문제는 underscore.js 또는지도 기능과 관련이 있지만 일반적으로 javascript와 관련이 없습니다.

0

이것은 실제로 Underscore.js 문제가 아니지만 JavaScript 개체 문제가 더 많습니다. test이 개체 리터럴이므로 Object.create()을 사용해야합니다. 이는 새로운 객체

var a = Object.create(test); 
test 걸릴 것

Fiddle

참조 : Creating new objects using object literals

MDN Object.create ***

*** 당신이 때문에 Object.create에 액세스 할 수없는 경우 브라우저 제한 사항에 따라이 MDN 페이지에는 하단에 polyfill 기능이 있습니다.

관련 문제