コンテンツへスキップ

hifiveのクラスモジュール紹介(その7)「親クラスの取得」

by : 2017/09/19

JavaScript(ECMAScript5)ではクラスを作成することができません。ECMAScript2015になって、ようやくクラスを使えるようになりました。しかしレガシーなブラウザでは実装されていないため、Babelのようなライブラリを使ってコードを変換するのが一般的です。

JavaScriptではprototypeやdefinePropertyなどを使ってクラス(的なもの)を実装しますが、hifiveではそういった面倒な仕組みを意識することなくクラスを実装できるモジュールを開発しました。この機能は1.3.1以降で利用できます。

今回は親クラスの取得方法について紹介します。

クラスの構造について

クラスや親クラスとしてAnimalClass、それらを継承するDogClassがあることとします。

var AnimalClass = h5.cls.RootClass.extend(function (super_) {
return {
// クラス名(完全修飾名)
name: 'AnimalClass',
// クラスのフィールド定義
field: {
_name: null
},
// クラスのメソッド定義
method: {
constructor: function (params) {
// 親クラスのコンストラクタ呼び出し
super_.constructor.call(this);
this._name = params;
},
hello: function() {
return this._name;
},
cry: function(name, voice) {
return name + "'s crying voice is " + voice;
}
}
};
});
var DogClass = AnimalClass.extend(function (super_) {
return {
name: 'DogClass',
field: {
_voice: {
defaultValue: 'bow wow'
}
},
method: {
constructor: function (params) {
super_.constructor.call(this, params);
},
cry: function() {
return super_.cry(this._name, this._voice);
}
}
}
});

view raw
index.js
hosted with ❤ by GitHub

DogClassの親クラスを取得するには getParentClass メソッドを実行します。

Animal.DogClass.getParentClass()

view raw
index.js
hosted with ❤ by GitHub

この返却されるクラスはAnimalClassと同じものになります。

Animal.DogClass.getParentClass() === Animal.AnimalClass
// -> true

view raw
index.js
hosted with ❤ by GitHub


今回のコードはJSFiddleにアップロードしてあります。実装時の参考にしてください。

継承している中で親クラスが何であるかを指定するケースはよくあります。そうした時には getParentClass メソッドを活用してください。

クラスの作成と使用 – hifive

From → hifive

コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。