2013-05-08 1 views
3

공공 기능 :자바 스크립트 : 자동 실행 클래스와 나는 다음 수업을 많이 가지고

(function() { 
    if (!window.Administration) { 
    window.Administration = {}; 
    } 
    window.Administration.Customers = (function() { 
     // some code and private methods 
     return { 
     // public methods 
     }; 
    })(); 
})(); 
내가 JS 엔진은 대중의 많은 인스턴스를 생성하기 때문에 공공 방법의 이러한 선언이 너무 좋지 않아 어디 선가 들어 본

당신이 코드에서 그것들을 호출했을 때 ... 그게 사실입니까?

이 경우 메모리 누출 문제를 해결하기 위해 내 코드를 리팩터링 할 수 있지만 자체 실행 가능 기능을 남겨 둘 수 있습니까?

는 당신에게 감사

당신이 숨기는 방법에 대한 유일한 걱정 대신 경우이 구조를 사용할 수
+0

어떻게 단순히 별도의 표현으로 함수 정의를 리팩토링에 대한? – raina77ow

+0

이것은 실제로 코드의 목표에 따라 달라집니다. 정보 숨기기가 중요하다면, 이것을 필요로합니다. 그렇지 않으면 프로토 타입을 통해 메소드에 볼트를 걸고 메모리를 절약하십시오. –

+0

질문은 누수가 얼마나 큰지입니다 – nKognito

답변

0

:

(function(ns) { 

    // default constructor 
    ns.Blah = function(v) { 
     this.v = v; 
     setup.call(this); // invoke private method 
    } 

    // private method, invoked using .call(this) 
    function setup() 
    { 
     this.w = this.v + 123; 
    } 

    function myhello() 
    { 
     return 'w = ' + this.w + ' and v = ' + this.v; 
    } 

    ns.Blah.prototype = { 
     hello: function() { 
      return myhello.call(this); 
     } 
    }; 

}(window.MYNS = window.MYNS || {}); 
+0

그것은 숨어있는 방법에 관한 것이 아니라고합니다 ... 나는 정말로 메모리를 절약하고 그러한 누출을 제거하려고합니다. – nKognito

+0

@nKognito 글쎄, 이것은 메모리를 절약 할 것입니다. 내가 뭔가 빠진거야? –

+0

하지만 ns.Blah는자가 실행 파일이 아닙니다. 맞습니까? – nKognito

관련 문제