Skip to content
nene edited this page Mar 21, 2012 · 18 revisions

Synopsis:

@property
Documentation for the property.

@property name
Documentation for the property.

@property {Type} name
Documentation for the property.

@property {Type} [name="default value"]
Documentation for the property.

@property {Type} name.subproperty
Documentation for the subproperty.

Documents the property.

Example:

/**
 * @property {Boolean} [hidden=false]
 * True when panel is hidden.
 */

Auto-detection

Anything that isn't found to be a class, method, event or config, is treated as property. So often the @property tag is not even needed as it's the default. The following is equivalent of the above:

/**
 * True when panel is hidden.
 */
Ext.Panel.prototype.hidden = false;

Here the name (hidden), type (Boolean) and default value (false) of the property are all auto-detected.

In next example the @property tag is used to force JSDuck to treat BASE_URL as a property (otherwise it will think it is a class name becase it begins with an uppercase letter):

/**
 * @property
 * Base URL to use for Ajax requests.
 */
Ext.Ajax.BASE_URL = "/";

JsDuck will auto-detect Number, String, Boolean, RegExp and Function types when it sees the corresponding literal assigned to the property. For properties of Function type you need to use the @property tag again, as otherwise JSDuck will see a function and think it's a method documentation.

Additionally arrays of these literals will be detected:

/**
 * CSS class names to apply for root element.
 */
cls: ["x-component", "x-item"],

Here the cls property will be detected with type String[] and default value ["x-component", "x-item"].

With anything else the type will default to Object and default value to undefined (which will not be shown in the documentation). That's why if you want to completely avoid auto-detection of default value, specify undefined as the default:

/**
 * @property {String} [baseName=undefined]
 */
baseName: "foo",
Clone this wiki locally