함수 범위 지정은 JavaScript에서 유일한 개인 정보를 제공합니다.JavaScript의 개인 정보 보호
그래서 표준 :이 주입 된 의존성에 대한 캡슐화를 제공하지 않습니다 점에서
function Ctor(dep1, dep2) {
this._dep1 = dep1;
this._dep2 = dep2;
}
Ctor.prototype.foo = function() {
// use this._dep1/2...
}
는 ... 문제가있다. 실제 캡슐화를 제공
(foo
의 위치면에서 약간의 차이이기는하지만) 대안이 될 수 있습니다
function factory(dep1, dep2) {
return {
foo: partial(foo, dep1, dep2), // or use bind (partial could be a library fn for partial application)
};
}
function foo(dep1, dep2) {
// use dep1/2
}
그러나 나는 거의이 패턴을 볼 수 없습니다. 후자를 사용하지 않는 좋은 이유가 있습니까?
어느 정도까지는 Symbol 속성은 가능한 한 더 나은 것으로 만들 것입니다. o 다른 키와 충돌하지 않도록 보장 된 속성 키를 생성합니다. 그러나, 그들은 여전히 완전히 "사적인"것은 아닙니다. – Pointy
닫기를 위해 투표하십시오 - 왜?! – Ben