단일 인스턴스 및 다중 인스턴스 관점에서 모듈 패턴 다음에 나오는 추가 코드 줄을 작성하는 방법과 정의 된 메서드 및 속성을 사용하는 표준 생성자를 사용하는 이유는 무엇입니까? 생성자 본문에?JavaScript 모듈 패턴 대 생성자에 정의 된 메소드가있는 생성자
모듈 패턴 샘플 : http://jsfiddle.net/T3ZJE/1/
var module = (function() {
// private variables and functions
var foo = 'bar';
// constructor
var module = function() {
};
// prototype
module.prototype = {
constructor: module,
something: function() {
}
};
// return module
return module;
})();
var my_module = new module();
console.log(my_module)
생성자 샘플 : 나에게 http://jsfiddle.net/EuvaS/2/
function Module(){
// private variables and functions
var foo = 'bar';
//public methods
this.something = function() {
}
}
var my_module = new Module();
console.log(my_module);
최종 결과는 거의 동일합니다. 둘 다 public 속성과 메서드를 가질 수 있으며 둘 다 public 메서드로 액세스 할 수있는 "private"변수와 메서드를 가질 수 있습니다.
둘 다 publicton/prototype 메소드를 싱글 톤에 대해 한 번 정의하며 둘 다 객체의 여러 인스턴스/클론에 대해 여러 번 정의합니다.
내가 누락 된 항목이 있습니까? 그 차이점은 무엇입니까?
실제로 중요한 차이점 중 하나입니다. – Fergal
poops와 giggles의 경우 Constructor 메소드를 약간 수정하면 정적 private vars가 생성되고 공용 메소드는 한 번만 정의되고 Constructor 범위의 모든 private vars에 액세스 할 수 있습니다. http://jsfiddle.net/zHwQX/2/ – Fergal
@ 좋은 점, 그 중 하나를 보지 못했습니다. 그래서 전체적으로, 더 많은 기능과 더 작은 메모리 풋 프린트를 짐작할 수 있습니다. – Damp