0
我正在研究应该由其他人使用的npm包。我决定这个软件包应该提供一些功能,使我的软件包中定义的对象更容易处理。具体功能,“委托”的方法。提供代理方法作为包作者
例如bark
function Dog(name) {
this.name = name
}
Dog.prototype.bark = function bark() {
return `${this.name}: Woof!`
}
function bark(dog) {
return dog.bark()
}
// Example use of bark.
console.log(
[ new Dog('Spike') ].map(bark)
)
但是我意识到这也可以围绕实现它的其他方式;使得Dog.prototype.bark
委托bark
:
function Dog(name) {
this.name = name
}
Dog.prototype.bark = function bark() {
return bark(this)
}
function bark(dog) {
return `${dog.name}: Woof!`
}
// Example use of bark.
console.log(
[ new Dog('Spike') ].map(bark)
)
我的问题是:应该在包的作者更喜欢一种风格比其他或有没有区别?
我希望有一个很好的理由更喜欢一个比另一个,否则我们有另一种风格无休止地辩论。
这实际上取决于用例。如果'bark'具有任何复杂的逻辑,或者以任何方式依赖狗的内部状态,看起来将该逻辑封装到类中会更好(选项1)。 –
@EvanTrimboli根据方法是否需要访问(概念上)“私有”属性做出决定是一种选择。但是,当你看到结果时,它仍然显得很随意。 – Mick
但事实并非如此,因为我也说过“依赖内部状态”,这意味着如果你有“子类”之类的话,实现就变得更加困难。可以说,这种模式本身在这种情况下并不特别有用,但它又取决于您的真实世界情景。 –