@augments
指名这个子类继承至哪个父类,后面需要加父类名
别名:@extends
Syntax(语法)
@augments <namepath>
Overview(概述)
@augments
or@extends
标签指明标识符继承自哪个父类,后面需要加父类名。你可以使用这个标签来记录基于类和并基于原型的继承。
在JSDoc3.3.0或更高版本中,如果一个标识符继承自多个父类,并且多个父类有同名的成员,JSDoc使用来自列出的JSDoc注释中最后一个父类的文档。
Examples (例子)
在下面的例子中,Duck
类被定义为Animal
的子类。Duck
实例和Animal
实例具有相同的属性,以及 speak
方法是Duck
实例所独有的。
例如,描述一个父类和子类的关系:
/**
* @constructor
*/
function Animal() {
/** Is this animal alive? */
this.alive = true;
}
/**
* @constructor
* @augments Animal
*/
function Duck() {}
Duck.prototype = new Animal();
/** What do ducks say? */
Duck.prototype.speak = function() {
if (this.alive) {
alert('Quack!');
}
};
var d = new Duck();
d.speak(); // Quack!
d.alive = false;
d.speak(); // (nothing)
在下面的例子中,Duck
类继承自Flyable
和Bird
类,这两个父类都定义了一个takeOff
方法。由于@augments Bird
是在 Duck
文档列表中最后,JSDoc自动使用Bird#takeOff
注释来记录Duck#takeOff
。
例如,用重写方法来实现多重继承:
/**
* Abstract class for things that can fly.
* @class
*/
function Flyable() {
this.canFly = true;
}
/** Take off. */
Flyable.prototype.takeOff = function() {
// ...
};
/**
* Abstract class representing a bird.
* @class
*/
function Bird(canFly) {
this.canFly = canFly;
}
/** Spread your wings and fly, if possible. */
Bird.prototype.takeOff = function() {
if (this.canFly) {
this._spreadWings()
._run()
._flapWings();
}
};
/**
* Class representing a duck.
* @class
* @augments Flyable
* @augments Bird
*/
function Duck() {}
// Described in the docs as "Spread your wings and fly, if possible."
Duck.prototype.takeOff = function() {
// ...
};