Closed hirosejn closed 6 years ago
a=new Array(1,2,3); a.push(4,5,6); a // [object Array][1, 2, 3, 4, 5, 6]
function eTat(){
var arr = Array.apply(this, arguments);
arr.hoge = function(){return this;}; // メソッド追加
arr.fuga = "FUGA"; // プロパティ追加
return arr
};
a=new eTat(1,2,3); a.push(4,5,6); a // [object Array][1, 2, 3, 4, 5, 6]
a.fuga; // "FUGA"
function inherits(sub, sup) {
sub.super_ = sup;
var F = function F () {};
F.prototype = sup.prototype;
sub.prototype = new F();
sub.prototype.constructor = sub;
};
function eTat(){};
inherits(eTat, Array);
a=new eTat(1,2,3); a.push(4,5,6); a // [object Object]{0: 4, 1: 5, 2: 6, @@hasInstance: undefined, @@isConcatSpreadable: undefined, @@match: undefined, @@replace: undefined, @@search: undefined, @@species: undefined, @@split: undefined, @@toPrimitive: undefined, @@toStringTag: undefined, @@unscopables: undefined, length: 3}
- ボツ案2
- Arrayのコンストラクタの引数が効かない(自作クラスは効く)
function eTat(){ Array.apply(this,arguments); }; eTat.prototype = new Array();
a=new eTat(1,2,3); a.push(4,5,6); a // [object Object] [4, 5, 6]
#### ie11では、代表的な継承方法で使う以下のメソッドは使えない
1. extends
class ETat extends Array {}; e=new ETat(1,2,3); e.push(4,5,6); e // ETat(6) [1, 2, 3, 4, 5, 6]
2. Object.create
ETat.prototype = Object.create(Array.prototype, {}); ETat.prototype.constructor = ETat; e=new ETat(1,2,3); e.push(4,5,6); e // ETat(6) [1, 2, 3, 4, 5, 6]
3. Refrect
function ETat() { var eTat = Reflect.construct(Array, arguments, ETat); return eTat; } ETat.prototype = new Array(); e=new ETat(1,2,3); e.push(4,5,6); e // (6) [1, 2, 3, 4, 5, 6]
#### 参考
[クラスの落とし穴3 - 継承](https://qiita.com/cocottejs/items/e75f751c7aa8a7361aab)
tat分析機能の独立(リファクタリング
[x] timeSeries フォルダ作成、timeSeries-tat.js分離 [x] tatからseriesSet取得機能(Graphから移植) [x] conc最大値取得 [x] 期間指定機能 (timeSeries-ETat.js分離)
対応見送り
[x] フィルター機能、上段表示用Menu / Filter 用HTML編集処理を移植( #74 使用) fileReaderとの結合度のほうが高いため timeSeriesには含めない [x] 下段表示用Menu / Bottom detail graph 編集処理を移植( #74 使用) Menu/Graphと密結合な機能のため tatLogDiver-Plot.js にファイル分割で十分
関連
前提 #74