2012-05-20 3 views
1

누군가 즉각적인 또는 자체 실행 기능이 전체 스택을 저장해야한다고 언급했습니다. 이것이 사실입니까 ... 그렇다면 모듈 패턴 (즉각적인 함수를 기반으로 함)과 일반 함수를 사용하는 장단점은 무엇입니까?일반 기능 대 즉시 기능의 효율성?

함수는 본질적으로 비공개이지만 공개하려는 항목을 반환 할 수 있으므로 개인 정보를 처리 할 수 ​​있습니다.

내가보기에 가장 큰 차이점은 글로벌 수입이 없거나 개발자가 (나를 기다리십시오) 기능에 새로운 기능을 사용하는지 (복잡한 지) 확인하는 기능이 없다는 것입니다.

일반적으로 개인 정보를 제공하고 모듈 패턴을 사용해야하는시기를 명시하려고 할 때 언제 일반 기능을 사용해야합니까?

두 번째 측면 질문은 새 기능과 함께 사용할 때 함수가 상태를 제공합니까?

답변

2

내부의 변수 또는 함수에 대한 지속적인 참조가 있기 때문에 계속되는 함수 클로저는 일정량의 메모리를 차지합니다. 오늘날의 컴퓨터 (심지어 전화기)의 경우, 수천 번 반복하지 않는 한이 양의 메모리는 일반적으로 중요하지 않습니다. 따라서 언어 기능을 사용하여 디자인 문제를 해결하는 것이 일반적으로 이러한 양의 메모리를 염려하는 것보다 중요합니다.

"전체 스택"이라고 말하면 최상위 자체 실행 함수의 호출 스택은 매우 작습니다. 스택에 실제로 호출되는 함수 하나만 제외하고는 아무 것도 없습니다.

함수도 객체입니다. 따라서 new과 함께 사용하면 값을 해당 속성에 할당하면 상태 (속성)를 가질 수있는 새 개체가 만들어집니다. 그것은 자바 스크립트에서 객체가 생성되는 주요 방법 중 하나입니다. 함수를 호출하고 반환 값을 검사하거나 new과 함께 사용할 수 있으며이 함수는 새 객체의 생성자 역할을합니다. 주어진 기능은 일반적으로 한 가지 방법으로 사용되거나 다른 방식으로 사용되도록 설계되었습니다.

모듈 패턴은 일반적으로 어떤 변수가 공용인지 제어하고 공개 할 때 매우 적은 최상위 전역 변수를 사용하는 구조화 된 네임 스페이스에 넣는 데 사용됩니다. 그것은 실제로 같은 문제를 해결하지 않기 때문에 스스로 실행하는 대신에 선택하는 것이 아닙니다. 모듈 패턴에 대한 자세한 내용은 여기를 참조하십시오. http://www.yuiblog.com/blog/2007/06/12/module-pattern/

http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depthhttp://www.klauskomenda.com/code/javascript-programming-patterns/의 옵션에 대한 정보를 볼 수 있습니다.

특정 기술의 장단점에 대해 논의하는 것이 더 쉽습니다. 특정 문제를 해결하려고 시도하는 특정 문제 또는 특정 디자인 문제가 아닌 일반적인 토론보다는 더 나은 방법입니다. 에 대해 정말 동등한 문제를 해결하지 않습니다.

자바 스크립트로 해킹 당할 수 있지만 핵심 언어 기능이 아닌 보호 된 비공개 회원을위한 최고의 참고 자료는 http://javascript.crockford.com/private.html입니다. 언어의 기본 프로토 타입 기능 대신이 방법을 사용하면 트레이드 오프가 발생하지만 실제로 필요한 경우 프라이버시를 확보 할 수 있습니다. 그러나 자바 스크립트는 프라이빗 또는 보호 된 메소드를 염두에두고 제작되지 않았 음을 알아야합니다. 프라이버시 수준을 얻으려면 코드를 작성하는 방법에 대한 관례를 사용해야합니다.

+0

+1에 대해 "너무 중요하지 않습니다"라는 말을 많이했습니다.';-)' – gdoron

+0

@gdoron - OP에는 약 5 가지가 다소 혼란스럽고 질문에 대한 질문이 있으므로 각 질문을 다루려고 노력했습니다. 특히 명확한 질문은 없지만 간략하기는 어렵습니다. – jfriend00

+0

@ jfriend.. 나는 개인 및 공공 회원과 함께 코드를 작성하는 사실상의 방법으로 객체 지향 코드를 작성하려고합니다. 이것은 두 가지 이유 때문입니다. 1.) 그것은 코드를 작성하는 가장 좋은 방법으로 권위있는 CS 학위 프로그램에서 인트로 코스에서 모범 사례로 가르쳐지는 것입니다. 이것이 현대적인 코드가 쓰여지는 방법입니다. 2.) 일반적으로 클래스를 정의하고 명시 적으로 개인 및 공용 멤버를 선언하는 C++ 및 Java와 같은 컴파일 된 언어로 강의되지만 (여전히이 개념을 JavaScript에 적용하려는 경우 ...) 3). 나는 내 코드의 스타일을 만들고 싶다. 나는 믿는다 .... –