逆引き機能検索
クラス
クラスを定義する
最も簡単なクラス定義は以下の通りです。
クラス定義
// このスクリプトが名前空間 your の中の Class というクラスであることを示します。
goog.provide('your.Class');
// これがクラスの定義です。
// goog.provide によって名前空間 your が自動的に作成されるので your の定義は必要ありません。
your.Class = function() {
// コンストラクト処理
};
goog.provide はファイルの最上部にまとめて書いてください。
なお、クラスの定義時には @constructor タグによるアノテーションをおこなうことを推奨します。
Closure Linter および Closure Compiler が new 演算子のない呼び出しを警告してくれるようになるからです。
クラス継承(簡易ドキュメント版)
goog.provide('your.Class');
/** @constructor */
your.Class = function() {
// コンストラクト処理
};
Closure Linter の strict モードではインターフェースおよびクラスのコンストラクタの直前は3行の空行をおかないと警告されます。
上の例では 3 行あけています。
クラスを継承する
クラス継承は goog.inherits (メソッド継承)と goog.base (親クラスの同名メソッド呼び出し) をつかいます。
子クラスのコンストラクタの直後に goog.inherits(子クラス, 親クラス); と記述し、
子クラスのコンストラクタ内で goog.base(this, 親クラスコンストラクタへの引数); と記述してください。
クラス継承
/** @constructor */
my.Parent = function() {
// 親クラスのコンストラクト処理
};
my.Parent.prototype.method = function() {
// 親クラスのメソッド
};
/**
* @constructor
* @extends {my.Parent}
*/
my.Child = function() {
goog.base(this, /* 親クラスのコンストラクタ呼び出し。ここで引数を指定できる。 */);
// 子クラスのコンストラクト処理
// goog.inherits によって親クラスのメソッドも使える。
this.method();
};
goog.inherits(my.Child, my.Parent);