@lends
优质
小牛编辑
134浏览
2023-12-01
描述: 将一个字面量对象的所有属性标记为某个标识符(类或模块)的成员。
语法
@lends <namepath>
概述
@lends
标签允许你将一个字面量对象的所有成员标记为某个标识符(类或模块)的成员,就像他们是给定名称的标识符成员。你可能想这样做,如果你传递一个对象字面量给一个函数,创建一个成员为对象字面量的命名类。
例子
在这个例子中,我们要使用一个辅助函数创建一个名为"Person"的类,以及名为"initialize" 和 "say"的实例方法。类似于一些流行框架创建类的方式。
例如,给makeClass
函数传入一个对象字面量,此对象字面量将会成为类Person
的成员:
// We want to document this as being a class var Person = makeClass( // We want to document these as being methods { initialize: function(name) { this.name = name; }, say: function(message) { return this.name + " says: " + message; } } );
没有任何意见,JSDoc将无法识别该代码创建的一个Person
类有两个方法。为了将他们正确文档化,我们需要在对象字面量紧邻的上方书写"@lends"的标签。@lends
标签告诉JSDoc,这一对象字面量的所有成员都会被“借”给"Person"类。
下面的例子更加接近我们想要的,例如,描述静态方法:
/** @class */ var Person = makeClass( /** @lends Person */ { initialize: function(name) { this.name = name; }, say: function(message) { return this.name + " says: " + message; } } );
现在名为"initialize"和"say"的函数会被文档化,但它们被标记为"Person" 类的静态方法。这可能是你的意思,但有种情况下我们想要"initialize"和"say"属于"Person"类的实例。所以,我们通过少做改动,使其成为原型的方法。
例如,标注实例方法:
/** @class */ var Person = makeClass( /** @lends Person.prototype */ { initialize: function(name) { this.name = name; }, say: function(message) { return this.name + " says: " + message; } } );
最后一个步骤:我们类框架使用借来的"initialize"函数来构建Person
类的实例,但一个Person实例不具有自己的"initialize"方法。该解决方案是将@constructs标签添加到借出去的函数上。请记住最好删除@class标签,否则两个类将被文档化。
例如,通过 constructor 文档化:
var Person = makeClass( /** @lends Person.prototype */ { /** @constructs */ initialize: function(name) { this.name = name; }, say: function(message) { return this.name + " says: " + message; } } );