※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

トップページ > ドックコメントの書き方 > タグリファレンス >

@lends

@lendsタグは無名オブジェクト(オブジェクトリテラル)の全メンバが、指定された名前を持つオブジェクトのメンバであるかのようにドキュメント化します。無名オブジェクトを引数にとり、そのオブジェクトのメンバを元に名前付きのクラスを生成する関数が用いられるような場合に、このタグを使いたいと思うでしょう。

別名

@scope

構文

@lends symbolAlias

  • symbolAlias -- 必須:メソッド、プロパティが渡されるオブジェクト(クラス)の完全なネームパス
  • 注意:@lendsタグを含むドックコメントは、それが適用されるオブジェクトリテラルの直前に置かれていなければなりません。

この例ではヘルパー関数を使用して、 initialize say という名前のインスタンスメソッドを持つクラス Person を作成しようとしています。これはいくつかの有名なフレームワークでクラスを生成するときのやり方とよく似ています。

var Person = makeClass(
    // we want to document these as being methods
    {
        initialize: function(name) {
            this.name = name;
        },
        say: function(message) {
            return this.name + " says: " + message;
        }
    }
);

ドックコメントが全く無い場合、JsDoc Toolkitは Person もその2つのメソッドも認識しません。メソッドをドキュメント化するためにはオブジェクトリテラルの直前に@lendsタグを記述して、JsDoc Tollkitに対しこのオブジェクトのメンバが Person という名前の要素に"lent"(貸与)されていることを伝える必要があります。

/** @class */

var Person = makeClass(

    /** @lends Person */

    {
        initialize: function(name) {
            this.name = name;
        },
        say: function(message) {
            return this.name + " says: " + message;
        }
    }
);

これで initialize say はドキュメント化されますが、それらは Person クラスの静的メソッドとなります。 あるいはそれは意図したとおりかも知れませんが、このケースでは我々は initialize say Person クラスのインスタンスに属させたいのです。そのためには記述を少しだけ変更し、メソッドがクラスのプロトタイプに渡されるようにします。

/** @class */

var Person = makeClass(

    /** @lends Person.prototype */

    {
        initialize: function(name) {
            this.name = name;
        },
        say: function(message) {
            return this.name + " says: " + message;
        }
    }
);

貸与される関数の1つをクラスコンストラクタとしたい場合、@constructsタグを使用することができます。しかし@classタグをこの場合には決して使わないでください、さもないとクラスが2つ出力されてしまいます。

var Person = makeClass(

    /** @lends Person.prototype */

    {

        /** @constructs */

        initialize: function(name) {
            this.name = name;
        },
        say: function(message) {
            return this.name + " says: " + message;
        }
    }
);

関連項目