2013-12-19 2 views
0

js는 정말 유연한 언어이므로 항상 사용자 정의 데이터 유형을 만들 수 있는지 궁금해했습니다. 마침내 나는 하나를 창조하려고 노력했다. 나는 단순한 클래스에 대해서 말하는 것이 아니라 js 네이티브처럼 행동하는 것에 대해 이야기하고 있습니다. 범위 데이터 형식을 만들겠습니다. 수학 범위는 (2.5; 9) 또는 (-Infinity; 5)이며 범위의 합계도 지원합니다 (2; 7) u (9; 27). 반복자를 쉽게 만들 수 있습니다. '에 대해 더 .... 예를 들어, 구문 JS 정기적를 지원하는 데 싶습니다, 또는 길이 속성은 단계 속성에 내놓고 calculeted. 슬프게도javascript - 사용자 정의 데이터 유형 - 필요한 정보/알아야 할 내용

내가 눈치 챘을 _ 반복자 _는 FF에서 여전히 지원되는지 열거되지 않은 다른 특성을함으로써 반복자를 준비 할 수 있어야 내가 알고

:.

-Object.create/defineProperties
,-getters/세터 -use
엄격한 (성능을 극대화하기 위해)
- _ 반복자 _ (실제로는 지원되지 않는)

이 유용 할 수있는 다른 있나요?

Atm. 나는 이렇게 할 것입니다 :

저는 단계 범위와 저장 범위가 변경 될 때마다 반복자를 미리 계산하기 위해 로컬 범위에서 숨겨진 값을 생성합니다. 둘 모두를 사용자에게 보이지 않게하기. 모든 프로퍼티는 단계를 제외하고는 열거 할 수 없다. - it는 반복자 재 계산으로 추가 될 것이다.

local scope: 
ranges:[[2;7]] // more arrays if it'd be sum 
iterator:[2,4,6] 
//other internal variables 

not enumerable: 
array: // returns copy of iterator using getter 
//some other useful properties 

enumerable: 
0:2 
1:4 
2:6 

그것이 좋은 생각, 또는 그것을 다른 더 적절한 방법이 있습니다, 그래서 간단한 범위 [2는 7 단계 2와 같을 것이다? 이 클래스가 + -와 같은 연산자를 사용하도록 허용 할 수 있습니까?

답변

1

자바 스크립트 (. ED 5) 번

  • 정의 문법 구문 또는 문자 형태를 만들 수;
  • 과부하 사업자
  • 그러나

이 많은 "사용자 정의 데이터 형식"생성 된 수 없습니다 자유롭게 다른 것을 창조하십시오. 예를 들어, jQuery (DOM 요소의 순서 조작), moment.js (날짜 대체) 및 big.js (조작이있는 "큰 숫자"유형)는 모두 "사용자 정의 데이터 유형"입니다. 메소드는 연산자으로 대체됩니다.

그렇지 않은 경우 질문의 나머지 부분이 어디에서 끝나는 지 알 수 없습니다.

관련 문제