JSDoc记录了原型继承

时间:2014-04-08 17:00:01

标签: javascript prototype jsdoc

假设我们正在构建一个嵌套的命名空间,我们将根据需要对多个对象进行原型设计。默认情况下,对象window.blah.foo为空。然后,我们将所有子对象及其功能原型化为单个原型。当我们在下面记录时,我们将所有内部函数显示为全局变量。现在假设你有几十个以同样方式构建的文件。我们如何记录这一点,以便.bar1(),bar2()和bar3()函数是window.blah.foo对象的方法,特别是当它的实例化发生在该文件之外时,可能多次。

/**
 * Blah - Our very own global Namespace
 * @namespace
 * @type {object}
 * @global
 * @public
*/
window.blah = window.blah || {};

/**
 * Immediately-Invoked Function Expression (IIFE). 
 * @function
 * @param {object} w - Global window object.
 * @returns {Object} window.blah.foo
*/
(function (w) {

    // strict JS
    'use strict';

    /**
     * Create instance of w.blah.foo constructor
     * @constructor
    */
    w.blah.foo = function () {

   };

    /**
     * Append properties and methods to an instance of window.blah.foo
     * @constructor
    */
    w.blah.foo.prototype = {

        /**
         * Dummy function to return the number 1.
         * @method bar1
        */
        bar1: function () {
            console.log(1);
        },

        /**
         * Dummy function to return the number 2.
         * @method bar2
        */
        bar2: function () {
            console.log(2);
        },

        /**
         * Dummy function to return the number 3.
         * @method bar3
        */
        bar3: function () {
            console.log(3);
        }

    };

}(window));

1 个答案:

答案 0 :(得分:4)

以下内容将移动它们所属的barX方法。请注意,jsdoc对于记录IIFE的doclet没有任何帮助。将方法放在正确位置的关键是/** @lends blah.foo# */。请参阅@lends的文档。 #告诉jsdoc,借给blah.foo的项目属于该类的实例。有关详细信息,请参阅namepaths上的文档。

/**
 * Blah - Our very own global Namespace
 * @namespace
 * @global
 */
window.blah = window.blah || {};

/**
 * Immediately-Invoked Function Expression (IIFE).
 * @function
 * @param {object} w - Global window object.
 * @returns {Object} window.blah.foo
 */
(function (w) {
    // strict JS
    'use strict';

    /**
     * Create instance of w.blah.foo constructor
     * @constructor
     * @name blah.foo
     */
    w.blah.foo = function () {

    };

    /** @lends blah.foo# */
    w.blah.foo.prototype = {

        /**
         * Dummy function to return the number 1.
         */
        bar1: function () {
            console.log(1);
        },

        /**
         * Dummy function to return the number 2.
         */
        bar2: function () {
            console.log(2);
        },

        /**
         * Dummy function to return the number 3.
         */
        bar3: function () {
            console.log(3);
        }

    };

}(window));