javascript - 让 jsdoc 和 Crockford 的设计模式相处融洽

标签 javascript oop requirejs

我正在使用 Douglas Crockford 的 design pattern实现私有(private)、特权和公共(public)方法。它基本上看起来像这样(使用 RequireJS ):

define(function () {
    return function () {
        var that = {},

        _init = function () {
            // "constructor"
        },

        _privateFn = function () {
            return 42;
        };

        that.publicFn = function () {
            return 2 * _privateFn();
        };

        _init(arguments);

        return that;
    };
});

但是,我无法获取 jsdoc toolkit正确解析它。我玩过 @name@memberOf 注释(如 here ),但无论我做什么,我都无法获得功能出现。

有人知道解决办法吗?

最佳答案

好吧,我终于明白了。方法如下:

/**
* @name MyModule
* @namespace
*/
define(['MyModule'], (function () {
    "use strict";

    var Clazz = function (config) {
        var that = {},

        /**
        * @private
        * @type number
        * @name MyModule#_privateField
        * @field
        */
        _privateField = 42,

        /**
        * Returns a private field
        * 
        * @private
        * @memberOf MyModule#
        */
        _privateFn = function () {
            return _privateField;
        };

        /**
        * Uppercases a string value.
        * 
        * @public
        * @name MyModule#publicFn
        * @function
        * @param {string} value The value to uppercase.
        */
        that.publicFn = function (value) {
            return value.toUpperCase();
        };

        return that;
    }

    return Clazz;
}));

关于javascript - 让 jsdoc 和 Crockford 的设计模式相处融洽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921034/

相关文章:

javascript - 是否有浏览器 API 来获取页面资源列表?

javascript - Prototype 如何扩展对象?

javascript - 无法绑定(bind)到 'routerlink',因为它不是使用 angular2-webpack-starter 的已知 native 属性

oop - 带有工厂构造函数的抽象类的好处?

java - 当存在可变类的引用时如何将不可变性设置为类

knockout.js - 使用require.js的Knockout.js映射插件

javascript - 如何使用 requirejs 正确定义 shim 配置

javascript - 如何不将插入符号 ^ 符号添加到用 yarn 安装的包中?

java - Java2D 和 Swing 是 Good Use OOP 的例子吗?

javascript - 带有 RequireJS 的 Knockout 映射插件 : Uncaught Error: Mismatched anonymous define() module