私は、オブジェクトの委譲パターンを使用してRangeSeq2を作成し、クラスのような方法(ArraySeq2)から離れたいが、 という配列オブジェクトをArraySeq2またはRangeSeq2のような繰り返しオブジェクトlogFive2を使用して、 。私がRangeSeq2に間違っていることは何ですか? LogFive2はRangeSeq2を反復処理しないため、私のコードは動作しません。理由はわかりません。何が間違っているのか分かっているなら、私に見せてください。ありがとうございました。クラスOOからオブジェクト委譲パターンへのシーケンス
function logFive2(sequence){
for(var i = 0; i < 5 && sequence != null; i++){
console.log(sequence.head());
sequence = sequence.rest();
}
}
function ArraySeq2(array,offset){
this.array = array;
this.offset = offset;
}
ArraySeq2.prototype.rest = function(){
console.log("to follow " + this.offset);
return ArraySeq2.make(this.array,this.offset + 1);
};
ArraySeq2.prototype.head = function(){
return this.array[this.offset];
};
ArraySeq2.make = function(array,offset){
if(offset == null) offset = 0;
if(offset >= array.length)
return null;
else return new ArraySeq2(array,offset);
}
logFive2(ArraySeq2.make([1, 2,5,6,9,11]));
// → 1
// → 2
上記の一部が正常に動作します______________それは私の問題を整理
var RangeSeq2 = {
init: function(from,to){
this.from = from;
this.to = to;
},
rest: function(){
if (from > to)
return null;
else
return this.init(this.from + 1,this.to);
},
head: function(){
return this.from;
}
};
var RangeTT = Object.create(RangeSeq2);
RangeTT.init(100,1000);
logFive2(RangeTT.init(100,1000));
どのようなエラーが表示されますか? –
私は何の誤りもなく、私が間違っていることを見ることができません。 –