この回答によると、独自のサブクラスを作成したいArray
QArray = function() {
Array.apply(this, arguments);
};
QArray.prototype = new Array();
QArray.prototype.constructor = QArray;
これは期待どおりに機能し、メソッドの呼び出しは機能しますが、コンストラクターは配列にチェーンしません。
// test constructor chaining
q = new QArray('1', '2', '3');
assert.equals('1', q[0]); // => undefined
assert.equals(3, q.length); // => 0
q = new QArray(10);
assert.equals(10, q.length); // => 0
QArray
プレーンに置き換えると、このテストに合格しますArray
。なんとなくArray
特殊なケースのようです。(Javascript 1.5 である Rhino 1.6 でこれを実行します。) Array のカスタム サブクラスを修正するにはどうすればよいですか?