2008-10-30 4 views
4

ExtJS에는 Ext.each() 함수가 있지만 어딘가에 숨겨진 map()도 있습니까?ExtJS에 map() 함수가 있습니까?

나는 열심히 노력했지만이 역할을 채울 수있는 것을 찾지 못했습니다. Ext에서와 같이 너무 큰 JS 라이브러리가 있어야한다는 것은 간단하고 사소한 것 같습니다.

Ext가 실제로 그것을 포함하지 않을 경우 Ext에 추가하는 가장 좋은 방법은 무엇입니까? 물론, 다음과 같이 쓸 수 있습니다.

Ext.map = function(arr, f) { ... }; 

그러나 실제로 이것을 올바르게 수행 할 수 있습니까?

+0

'각'에없는 '지도'의 다른 동작은 무엇입니까? Ext.prototype.map = Ext.each.toSource(); 도움? – Thevs

+3

'each'는 array의 원소에 함수를 적용하지만 아무 것도 반환하지 않습니다. 'map'은 각 함수 호출의 결과를 리턴해야합니다. –

답변

2

여기 대학에서 ext-basex을 사용하고 있는데, map.() 및 다른 방법으로 Array.prototype을 확장합니다.

그래서 난 그냥 쓸 수 있습니다 :

[1, 2, 3].map(function(){ ... }); 

문제 해결.

+0

1 년이 넘었고 Ext에는 여전히 map()이 없습니다. Ext.invoke()와 Ext.pluck()은 map()의 특별한 경우에 해당합니다. 어쨌든 ... 지금은 우리가 필요로하지 않는 너무 많은 것들을 담고있는 ext-basex를 포기하고, map()과 다른 유용한 메소드를 Array에 추가하는 우리 자신의 작은 라이브러리를 작성했습니다. –

2

map은 무엇보다 유틸리티입니다. 왜 Ext 네임 스페이스에 연결하는 특별한 방법이 있을지 모르겠습니다. 당신이 thusly 히를 수행 할 수 있습니다하지만 당신이 제안하는 방식은 충분히 잘 작동합니다 : 그것은 잘 될 것 같은

if(Ext && typeof(Ext.map) == "undefined") { // only if Ext exists & map isn't already defined 
    Ext.map = function(arr, f) { ... }; 
} 

이 보인다 ...하지만, 내가는 ExtJS를 사용하지 않는, 그래서 나도 몰라 . 나는 그들의 문서를 훑어 보았는데,이 경우에는 특별한 것이 없어 보이지 않는다.

0

ExtJS는 자바 스크립트 자체를 대체하지 않습니다. 배열 함수는 ExtJS 코어에 집중하지 않습니다. 그러나 특별한 Ext.Array 객체 유형이 있습니다. 직접 확장 할 수 있습니다.

EDIT : Ext.Array가 아니라 확장 된 Array 개체입니다.

+0

Ext.Array가 없습니다. Ext는 실제로 Array.prototype 자체를 indexOf() 및 remove() 메서드로 확장합니다. –

+0

예, 계층 구조가 일치하지 않습니다. 그것은 단지 확장 된 Array 객체입니다. 그러나 이것은 귀하의 경우에 훨씬 좋습니다. – Thevs

1

Ext + Prototype 또는 Ext + Jquery와 같은 하이브리드 라이브러리 중 하나를 사용하면 어떨까요? 나는 잠시 동안 Extjs + Prototypejs를 사용 해왔고 Extjs 코드에 익숙한 프로토 타이프를 타고 타는 데 많은 도움이되었습니다.

http://extjs.com/products/extjs/build/ extjs 및 (prototypejs | jquery | yahooUI)를 실행하는 데 필요한 모든 파일의 사용자 정의 tar/zip 파일을 작성합니다.

+0

제가 말했듯이, ext-basex를 사용하여 이미 제 문제를 해결했지만, 귀하의 제안을 염두에 두겠습니다. –

관련 문제