Javascript 解釋範例

Javascript 代碼解釋範例

一、語法

1. 解釋的申明

語法:寫在解釋塊第一行

/**
 * events-function(這是解釋的申明)
 * @description 切換音頻播放狀況(播放/住手)
 */
togglePlay: function() {
    // 省略別的代碼...
}

2. 標籤

語法:@tagName

/** @function */
function fn() {

}

3. 標籤的申明

語法:- 申明筆墨

/**
 * @constructor Student - 門生
 * @param {string} name - 門生的名字
 */
 function Student(name) {
     
 }

4. 範例

語法:{typeName} (可與標籤連繫運用,如@param)

/**
 * @param {string} a 必傳參數
 */
function fn(a, b, c) {

}

5. 可選參數

語法:[paramName] (可與標籤連繫運用,如@param)

/**
 *  @param {string} a 必傳參數
 *  @param {number} [b] 可選參數
 */
function fn(a, b) {

}

6. 參數有默認值

語法:[paramName=value] (可與標籤連繫運用,如@param)

/**
 *  @param {string} a 必傳參數
 *  @param {number} [c=666] 參數有默認值
 */
function fn(a, c) {

}

7. 鏈接

語法:[link text]{@link namepathOrURL}

/**
 * See {@link MyClass} and [MyClass's foo property]{@link MyClass#foo}.
 * Also, check out {@link http://www.google.com|Google} and
 * {@link https://github.com GitHub}.
 */

二、示例

1. 函數

/**
 * 轉換時候字符串為時候對象
 * @function _str2time
 * @param strTime {String} - e.g "2017-02-13 10:02:58" or "2017-02-13" or "9:10"
 * @param type {String} - e.g date, dateTime, time
 */
function _str2time(strTime, type) {
    // 省略別的代碼
}

2. 類/組織函數

/**
 * 定時器
 * @class Timer
 */

function Timer() {
    this._timeId = 0;
    this._eventId = -1;

    this.eventHandler = {
        'stop': {}
    };

    /**
     * 定時器是不是處於住手狀況
     * @memberof Timer
     * @member stopped
     * @instance
     */
    this.stopped = true;

    /**
     * 啟動定時器
     * @memberof Timer
     * @instance
     * @method start
     * @param {function} handler - 定時器每次實行時挪用的函數
     * @param {number} interval - 定時器實行的時候距離
     */
    this.start = function (handler, interval) {
        this.stopped = false;
        let _recursion = function() {
            this._timeId = setTimeout(() => {
                handler()
                    .then(() => {
                        if (this.stopped) {
                            clearTimeout(this._timeId);
                            this._trigger('stop');
                            return;
                        }
                        _recursion();
                    })
                    .catch(err => {
                        clearTimeout(this._timeId);
                        this.stopped = true;
                        this._trigger('stop');
                        if (err) throw new Error(err);
                    });
            }, interval)
        }.bind(this);
        _recursion();
    }

    /**
     * 住手定時器
     * @memberof Timer
     * @instance
     * @method stop
     */
    this.stop = function () {
        this.stopped = true;
    }
}

/**
 * 監聽事宜
 * @memberof Timer
 * @instance
 * @method on
 * @param {string} type - 事宜範例  e.g 'stop'
 * @param {function} fn - 事宜處置懲罰函數
 * @return {number} eventId - 事宜處置懲罰函數Id,用於作廢監聽
 */
Timer.prototype.on = function (type, fn) {
    let _eventId = fn.name || ++this._eventId;
    this.eventHandler[type][_eventId] = fn;
    return _eventId;
}

/**
 * 觸發事宜
 * @private
 */
Timer.prototype._trigger = function (type) {
    let handlerMap = this.eventHandler[type];
    for (let key in handlerMap) {
        handlerMap[key]();
    }
}

/**
 * 作廢監聽事宜
 * @memberof Timer
 * @instance
 * @method off
 * @param {string} type - 事宜範例  e.g 'stop'
 * @param {function} target - 事宜處置懲罰函數Id或許函數名字
 */
Timer.prototype.off = function (type, target) {
    let _target = (typeof target === 'function') ? target.name : target;
    delete this.eventHandler[type][_target];
}
    原文作者:shayeLee
    原文地址: https://segmentfault.com/a/1190000015204718
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞