如何构造一个javascript类以同时使用多个子方法?
假设我有三门课:如何构造一个javascript类以同时使用多个子方法?,javascript,node.js,class,oop,object,Javascript,Node.js,Class,Oop,Object,假设我有三门课: function Basket() { this.catches = [] } Basket.prototype.addCatch = function(catch) { catches.push(catch) } function Pole() { } Pole.prototype.catchFish = function() { return "fish" } function Fisherman() { this.pole = new
function Basket() {
this.catches = []
}
Basket.prototype.addCatch = function(catch) {
catches.push(catch)
}
function Pole() {
}
Pole.prototype.catchFish = function() {
return "fish"
}
function Fisherman() {
this.pole = new Pole()
this.basket = new Basket()
}
现在,当我创建一个渔夫
时,我可以钓到一条鱼并把它放进篮子里
现在我想在一个电话里同时做这两件事。我现在实施它的方式如下:
function Fisherman() {
this.pole = new Pole()
this.basket = new Basket()
this.utils = {}
this.utils.catchAndStore = function() {
let { pole, basket } = this
basket.addCatch(pole.catchFish())
}.bind(this)
}
我似乎在工作,但感觉不太对劲。为了实现这一目标,组织班级的好方法是什么?或者这种复杂性应该从这门课中释放出来吗?就像这样:
Fisherman.prototype.catchFish = function () {
if (!this.basket.addCatch || !this.pole.catchFish)
return console.log("Hey!I need correct tools!");
this.basket.addCatch(this.pole.catchFish());
}
就这样,
Fisherman.prototype.catchFish = function () {
if (!this.basket.addCatch || !this.pole.catchFish)
return console.log("Hey!I need correct tools!");
this.basket.addCatch(this.pole.catchFish());
}
“两个电话都在一个电话里”是什么意思?正如您的代码所示,在“一次调用”中无法真正做到这一点,因为JavaScript引擎是单线程、运行到完成的beast。不管你会创造什么样的“把戏”——它都是上面的某种变体——就像你在其他类中使用方法一样,将函数放在Fisherman.prototype.catchAndStore上。另外,验证你不能使用类……@Bergi我不想污染这个名称空间,这就是为什么我想把那些助手放在他们自己的房间里object@ThibautSchaeffer这里没有污染,捕鱼和储存鱼类是渔民的工作。不,当你把代码放在另一个对象上时,代码不起作用,请参阅我的链接。如果您坚持,请使用命名约定,例如
Fisherman.prototype.util\u catchAndStore
。这“一次调用两个”是什么意思?正如您的代码所示,在“一次调用”中无法真正做到这一点,因为JavaScript引擎是单线程、运行到完成的beast。不管你会创造什么样的“把戏”——它都是上面的某种变体——就像你在其他类中使用方法一样,将函数放在Fisherman.prototype.catchAndStore上。另外,验证你不能使用类……@Bergi我不想污染这个名称空间,这就是为什么我想把那些助手放在他们自己的房间里object@ThibautSchaeffer这里没有污染,捕鱼和储存鱼类是渔民的工作。不,当你把代码放在另一个对象上时,代码不起作用,请参阅我的链接。如果您坚持,请使用命名约定,例如Fisherman.prototype.util\u catchAndStore
。