【发布时间】:2016-06-15 12:44:42
【问题描述】:
函数作用域提供 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 属性的支持会让事情变得更好,因为可以创建保证不会与其他键冲突的属性键。但是,它们仍然不是完全“私有的”。
-
投票赞成 - 为什么?!
标签: javascript partial-application