2012-05-23 10 views
3

나는 the bullet chart example at D3 v2.4.2 github repository을 참조하고 있습니다.글 머리 기호 차트 예

이 예제에서 일어나는 일을 명확히하는 데 도움이되는 몇 가지 질문이 있습니다. (X) {} 등이 총알 오브젝트로부터오고있다 bulletChart 함수에서

1)

형태 8 개 선언있다 bullet.ranges = 함수 (X) {} = bullet.markers 함수 ? 라이브러리에 내장되어 있습니까? 우리가 이미 bulletRanges 함수에 변수 범위를 설정했다고 생각했거나이 두 가지 범위 변수입니까?

2) 실제로 이러한 기능 내부에서는 어떤 기능이 사용됩니까?

3) 마지막 질문. bulletChart 함수가 실행을 시작하면 bulletChart 함수가 실행될 때 bullet 함수를 실행하기 시작하거나 명시 적 호출을 기다리는가? 왜냐하면 나는 실제로 명시 적으로 총알 (g)을 본 적이 없기 때문에?

이 라이브러리는 정말 혼란 스러울 수 있습니다. 어떤 도움이라도 대단히 감사합니다.

답변

5

1) 이름의 시작 부분에있는 bullet은 70 행에서 작성된 동일한 이름의 함수를 나타냅니다.이 호출은 객체에도 구성원을 추가하며 호출 가능합니다. 이는 기본적으로 반환 된 객체를 사용자 정의 할 수있는 방법입니다. OO 조건에서는 bullet이 객체이며 함수는 멤버에 대한 접근자를 정의합니다. bulletRanges 등의 기능은 바깥 쪽 bulletChart 기능과 유사한 기능을 제공합니다. OO 용어에서 중첩 된 객체를 생각해보십시오.

2) 참조하십시오. 함수는 bullet 함수 내에 정의 된 변수에 대한 접근 자이며 이러한 방식으로 동작을 사용자 지정할 수 있습니다. 다시 한번, 객체 지향 코드는 접근자를 통해 노출되는 객체의 private 멤버가됩니다.

3) bullet 함수의 반환 값은 호출 가능 객체입니다. 이것은 bulletChart가 반환하는 것입니다. 따라서 예제에서 함수 호출은 변수 chart.call 함수에 전달하여 19 번째 및 36 번째 줄 (d3 함수를 통해)에서 발생합니다. 라인 5에서 chart의 할당은 객체와 호출 가능 클로저를 생성하는 코드를 호출하는 것입니다.

자바 스크립트에 익숙하지 않은 사용자라면 클로저와 같은 이국적인 기능에 대한 자습서 자료를 찾아 보는 것이 도움이 될 수 있습니다.

+0

Lars에게이 점을 명확히 해 주셔서 감사합니다. Lars가 큰 도움이되었습니다. 나는 자바 스크립트로 다른 일을했지만 분명히 전문가는 아니다. 몇 가지 고급 자습서를 살펴 보겠습니다. 다시 한 번 감사드립니다. – Tommy

관련 문제