-
Notifications
You must be signed in to change notification settings - Fork 240
@override
(Available since JSDuck 4.0)
Synopsis:
@override OverriddenClassName
Documents an Ext JS 4 style override. When used in class doc-comment all the members of the class will be moved over to the class identified by OverriddenClassName
as if they were defined inside that class. The class with the @override
tag will not show up in documentation.
One should rarely need to use the @override tag directly as the override:
property inside Ext.define()
is auto-detected.
/** */
Ext.define("My.Element.Override", {
override: "Ext.dom.Element",
/** An additional method for Ext.dom.Element */
blowUp: function() {
// amazing graphics manipulation code here
}
};
The blowUp
method will be moved over to Ext.dom.Element
and the My.Element.Override
class itself will be discarded from documentation. Though the method will get a small note saying that it originates from an override named My.Element.Override
. If the Ext.dom.Element
already has a blowUp
method, then the documentation from the override will be appended to the docs of that method.
However, if you're not using Ext.define to create the override, you need to use the @override
tag explicitly. The following code will result in equivalent docs:
/**
* @class My.Element.Override
* @override Ext.dom.Element
*/
Ext.override(Ext.dom.Element, {
/**
* An additional method for Ext.dom.Element
*/
blowUp: function() {
// amazing graphics manipulation code here
}
});
Note that you need to use @class
tag and give some kind of name for your override. The name won't show up anywhere in the docs, but Ext JS 4 requires overrides to have a name. The problem is that the above code is not really an Ext JS 4 override - it simply overrides a method within a class, but it doesn't create a separate override-class. Therefore it's usually better to just use a @class
tag - all members will then simply be added to that class:
/**
* @class Ext.dom.Element
*/
Ext.override(Ext.dom.Element, {
/**
* An additional method for Ext.dom.Element
*/
blowUp: function() {
// amazing graphics manipulation code here
}
});
The only problem is, that this only works for adding new members to a class. If you override an existing method, JSDuck will complain about duplicate members in class - in that case you need to go back and still use the @override
tag.