JavaScript 언어는 클래스 또는 클래스 기반 상속을 직접 지원하지 않습니다.인스턴스 기반의 효율적인 개인 기능 | 실행 시간이 필요합니다
그러나 JavaScript에는 많은 클래스가 구현되어 있습니다.
필자가 본 모든 구현에서는 인스턴스 기반의 효율적인 개인 기능을 만들기 위해 자체 호출 함수를 사용해야합니다.
함수는 개인 정보 보호를
var foo = function(){ /* private to foo here */ };
을 가지고 있지만 당신이 그것을 떨어져 프로토 타입 경우 당신은 지금 공개, 인스턴스 기반의 효율적인 회원이있다.
foo.prototype.func = function(){ /* private to func */ }; // foo.func in public now.
이
var foo = function() {
var funcInner = function(){};
}; // funcInner is now re-defined in each call to foo. In-efficient.
처럼 foo는에서 함수를 배치하면 누락 된 개인 정보를 얻을 수 있지만, 지금에-효율성이 있습니다. 따라서
전용 예 기반 효율적인 기능을 가질 수있는 유일한 방법은 전화 등
var NS = (function(){
var private = function(){ /* code */ }; // only created once b.c. in module pattern.
var publik = {};
publik.funcPublic = function(){ /* code */ };
return publik;
})();
같이 모듈 패턴 (또는 유사한 자기 호출 패턴)를 사용하는 것이다
NS.funcPublic();
이것으로 인스턴스 기반의 효율적인 개인 기능을 갖춘 것으로 보이며 실행 시간이 짧아야합니다.
이 정보가 맞습니까?
현재 익명 자체 실행 함수가 반환하는 개체를 사용하지 않습니다. 따라서 대답은 아니오입니다. 그러나 반환 된 객체를'var p = (function() ...)();'에 저장하면 p는 "funcPublic"이라는 속성 하나를 가진 객체를 포함합니다. 그래서'p.funcPublic() ; '작동합니다. 단일 "인스턴스"만 있으면됩니다. – Niko