Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何记录使用object.create创建的对象,该对象也具有原型方法_Javascript_Google Closure_Jsdoc_Jsdoc3 - Fatal编程技术网

Javascript 如何记录使用object.create创建的对象,该对象也具有原型方法

Javascript 如何记录使用object.create创建的对象,该对象也具有原型方法,javascript,google-closure,jsdoc,jsdoc3,Javascript,Google Closure,Jsdoc,Jsdoc3,我正在努力找出使用jsdoc3和闭包字典实现jsdoc的最佳方法。下面的代码几乎是我想要的文档,但是@class标记在文档中添加了一个新的关键字,而且我也对使用类定义感到不安,因为它不是真正的类 /** *myObject构造函数请勿与new一起使用。 *@class myObject *@param{string}someText要存储的文本 */ 函数myObject(someText){ var instance=Object.create(myObject.prototype); ins

我正在努力找出使用jsdoc3和闭包字典实现jsdoc的最佳方法。下面的代码几乎是我想要的文档,但是
@class
标记在文档中添加了一个新的关键字,而且我也对使用类定义感到不安,因为它不是真正的类

/**
*myObject构造函数请勿与new一起使用。
*@class myObject
*@param{string}someText要存储的文本
*/
函数myObject(someText){
var instance=Object.create(myObject.prototype);
instance.someText=someText;
返回实例;
}
/**
*输出到控制台
*/
myObject.prototype.doSomething=函数(){
console.log(this.someText);
};
var测试=myObject(“foobar”);
试验。剂量测定();

@namespace
最初似乎是一个更好的选择,但它不允许在伪构造函数上记录
@param
或类似内容。感谢您的帮助

你想做的事情似乎太复杂了。如果需要构造/返回特定类型的工厂方法,只需将其显式化:

/**
 * myObject factory.
 * @param {string} someText
 * @returns {!myObject} The constructed object.
 */
function createMyObject(someText) {  
  return new myObject(someText);
}

/*
 * @param {string} someText The text to store
 * @constructor
 */
function myObject (someText) {  
  this.someText = someText;
}

/**
 * Outputs to the console
 */
myObject.prototype.doSomething = function () {
  console.log(this.someText);
};

var test = createMyObject('foobar');
test.doSomething();

这里演示了构造函数/工厂的可能实现,以及如何记录构造对象的成员:

/**
 * Constructs my object.
 *
 * <p>
 * It is not necessary to call this with <i>new</i> keyword.
 *
 * @name myObject
 * @namespace
 * @constructor
 * @param {string} someText The text to store
 */
function myObject ( someText ) {
    var instance = Object.create( myObject.prototype, {
        /**
         * A member, could be a value of any type.
         *
         * @type {string}
         * @memberof myObject#
         */
        anyMember: {
            value: "whatever"
        },
        /**
         * A <strong>method</strong> member.
         *
         * @param {string|number|object|function} anArgument A parameter.
         *
         * @method
         * @memberof myObject#
         */
        aMethodSpecially: {
            value: function ( anArgument ) {
                throw "Not yet implemented";
            }
        }
    } );

    /**
     * Some text.
     *
     * @property {string}
     */
    instance.someText = someText;

    return instance;
}

/**
 * Outputs to the console.
 *
 * @param {number|string|function|object} someArgument Some method argument.
 * @function doSomething
 * @memberof myObject#
 */
myObject.prototype.doSomething = function ( someArgument ) {
    // @ts-ignore
    console.log( this.someText );
};

var test = myObject( 'foobar' );
test.doSomething();
/**
*构造我的对象。
*
*
*不必用new关键字调用此函数。
*
*@name myObject
*@名称空间
*@constructor
*@param{string}someText要存储的文本
*/
函数myObject(someText){
var instance=Object.create(myObject.prototype{
/**
*成员可以是任何类型的值。
*
*@type{string}
*@memberofmyobject#
*/
任何成员:{
价值观:“随便”
},
/**
*方法成员。
*
*@param{string | number | object | function}参数参数。
*
*@方法
*@memberofmyobject#
*/
特别是:{
值:函数(辩论){
抛出“尚未实施”;
}
}
} );
/**
*一些文本。
*
*@property{string}
*/
instance.someText=someText;
返回实例;
}
/**
*输出到控制台。
*
*@param{number | string | function | object}某个参数某个方法参数。
*@function doSomething
*@memberofmyobject#
*/
myObject.prototype.doSomething=函数(someArgument){
//@ts忽略
console.log(this.someText);
};
var测试=myObject('foobar');
试验。剂量测定();
使用JSDoc 3生成的文档如下所示:

---截图继续


我已经用typedeffed返回类型记录了一个工厂方法,但无法让原型方法在intellisense中显示出来。但我完全错过了@memberof结尾的那一点,所以它现在起作用了。但是在usejsdoc上找不到该哈希的解释。它表示一个实例成员啊,对了,我是盲人,它就在那里:它还说你也可以使用
@memberof something.prototype
而不是
@memberof something.