包含方法的对象的JSDoc表示形式

时间:2019-10-14 09:35:01

标签: javascript jsdoc

我正在开发一个应用程序,我希望我的代码尽可能地易读,并且我想使用JSDoc。我想描述对象,但是我没有在网上看到例子

我尝试了@memberof,但是该对象包含嵌套对象,因此变得难以阅读


/**
 * @const {Object} SUPPORT Objet pour gérer les supports
 */
const SUPPORT = {

    /**
     * @property {Object} container Propriété pour gérer le conteneur
     */
    container: {

        /**
         * Récupérer le conteneur
         * @returns {Object | null} Element récupéré ou null
         */
        get: () => {
            return document.getElementById("video_container")
        },

        /**
         * Nettoyer le conteneur (enlever les éléments à l'interieur)
         */
        clear: () => SUPPORT.container.get().innerHTML = "",

        /**
         * Ajouter un élement dans le conteneur
         * @param {HTMLElement} element Element qui va être ajouter au conteneur
         */
        add: (element) => SUPPORT.container.get().appendChild(element),

        /**
         * Enlever un élément du conteneur
         * @param {HTMLElement} element Element qui va être retirer au conteneur
         */
        remove: (element) => SUPPORT.container.get().removeChild(element)

    },
    video: {

        /**
         * Générer du code HTML
         * @param {string} chemin Chemin de la vidéo
         */
        genererHTML: (chemin) => {
            const video = document.createElement("video");
            const source = document.createElement("source");
            video.width = "640";
            video.height = "480";
            source.src = chemin;
            video.appendChild(source);
            SUPPORT.container.add(video);
        }
    },
    image: {

        /**
         * Générer du code HTML
         * @param {string} chemin Chemin de l'image
         */
        genererHTML: chemin => {
            const image = document.createElement("img");
            image.src = chemin;
            SUPPORT.container.add(image);
        }
    }
};

当我转到JSDoc输出时,我希望有正确的文档

编辑: 我找到了一个解决方案:我在命名空间中使用命名空间,但是它不是干净的

/**
 * @const {Object} SUPPORT Object qui contient les informations pour gérer les supports
 * 
 * @namespace SUPPORT
 */
const SUPPORT = {

    /**
     * @namespace SUPPORT.container
     */
    container: {

        /**
         * Récupérer le conteneur
         * @returns {Object | null} Element récupéré ou null    
         */
        get: () => {
            return document.getElementById("video_container")
        },

        /**
         * Nettoyer le conteneur (enlever les éléments à l'interieur)
         */
        clear: () => SUPPORT.container.get().innerHTML = "",

        /**
         * Ajouter un élement dans le conteneur
         * @param {HTMLElement} element Element qui va être ajouter au conteneur
         */
        add: (element) => SUPPORT.container.get().appendChild(element),

        /**
         * Enlever un élément du conteneur
         * @param {HTMLElement} element Element qui va être retirer au conteneur
         */
        remove: (element) => SUPPORT.container.get().removeChild(element)

    },

    /**
     * @namespace SUPPORT.video
     */
    video: {

        /**
         * Générer du code HTML
         * @param {string} chemin Chemin de la vidéo
         */
        genererHTML: (chemin) => {
            const video = document.createElement("video");
            const source = document.createElement("source");
            video.width = "640";
            video.height = "480";
            source.src = chemin;
            video.appendChild(source);
            SUPPORT.container.add(video);
        }
    },

    /**
     * @namespace SUPPORT.image
     */
    image: {

        /**
         * Générer du code HTML
         * @param {string} chemin Chemin de l'image
         */
        genererHTML: chemin => {
            const image = document.createElement("img");
            image.src = chemin;
            SUPPORT.container.add(image);
        }
    }
};

0 个答案:

没有答案