본문으로 건너뛰기

JSDoc 3에서 이름 경로 사용하기

JSDoc 3의 이름 경로​

문서의 다른 곳에 있는 JavaScript 변수를 참조할 때, 해당 변수에 매핑되는 고유 식별자를 제공해야 합니다. 이름 경로는 이를 수행하고 인스턴스 멤버, 정적 멤버 및 내부 변수를 구별하는 방법을 제공합니다.

JSDoc 3에서 이름 경로의 기본 구문 예제

myFunction
MyConstructor
MyConstructor#instanceMember
MyConstructor.staticMember
MyConstructor~innerMember // JSDoc 2에서는 대시를 사용합니다.

아래 예제는 "say"라는 이름의 인스턴스 메서드, "say"라는 이름의 내부 함수, 그리고 "say"라는 이름의 정적 메서드를 보여줍니다. 이들은 서로 독립적으로 존재하는 세 가지 구별된 메서드입니다.

코드를 설명하는 문서 태그를 사용하세요.

/** @constructor */
Person = function () {
this.say = function () {
return "나는 인스턴스입니다."
}

function say() {
return "나는 내부입니다."
}
}
Person.say = function () {
return "나는 정적입니다."
}

var p = new Person()
p.say() // 나는 인스턴스입니다.
Person.say() // 나는 정적입니다.
// 여기서 내부 함수에 직접 접근할 수 있는 방법은 없습니다.

세 가지 다른 메서드를 참조하기 위해서는 세 가지 다른 이름 경로 구문을 사용합니다:

코드를 설명하는 문서 태그를 사용하세요.

Person#say  // "say."라는 이름의 인스턴스 메서드.
Person.say // "say."라는 이름의 정적 메서드.
Person~say // "say."라는 이름의 내부 메서드.

내부 메서드를 참조하는 구문이 있는 이유는 그 메서드가 정의된 함수 바깥에서 직접 접근할 수 없기 때문입니다. 그것은 사실이며 "~" 구문은 거의 사용되지 않지만, 컨테이너 내의 다른 메서드에서 내부 메서드에 대한 참조를 반환하는 것이 가능하므로, 코드의 다른 객체가 내부 메서드를 빌려 사용할 수 있는 가능성이 있습니다.

생성자가 인스턴스 멤버로서 다른 생성자를 갖는 경우에는 이름 경로를 함께 연결하여 더 긴 이름 경로를 형성할 수 있습니다:

코드를 설명하는 문서 태그를 사용하세요.

/** @constructor */
Person = function () {
/** @constructor */
this.Idea = function () {
this.consider = function () {
return '음...'
}
}
}

var p = new Person()
var i = new p.Idea()
i.consider()

이 경우, "consider"라는 이름의 메서드를 참조하기 위해서는 다음과 같은 이름 경로를 사용합니다: Person#Idea#consider

이 체인은 연결 기호 # . ~의 조합과 함께 사용될 수 있습니다.

특수 케이스: 모듈, 외부 및 이벤트.

/** 모듈입니다. 이름은 module:foo/bar입니다.
* @module foo/bar
*/
/** 내장된 문자열 객체입니다. 이름은 external:String입니다.
* @external String
*/
/** 이벤트입니다. 이름은 module:foo/bar.event:MyEvent입니다.
* @event module:foo/bar.event:MyEvent
*/

이름 경로에 대한 몇 가지 특수 케이스가 있습니다: @module 이름은 "module:"으로 접두사 붙고, @external 이름은 "external:"으로 접두사 붙으며, @event 이름은 "event:"로 접두사 붙습니다.

이름에 특수 문자가 있는 객체의 이름 경로.

/** @namespace */
var chat = {
/**
* {@link chat."#channel"}로 참조합니다.
* @namespace
*/
'#channel': {
/**
* {@link chat."#channel".open}으로 참조합니다.
* @type {boolean}
* @defaultvalue
*/
open: true,
/**
* 내부 따옴표는 백슬래시로 이스케이프해야 합니다. 이것은
* {@link chat."#channel"."say-\"hello\""}입니다.
*/
'say-"hello"': function (msg) {},
},
}

/**
* 이제 {@link chat."#channel"} 네임스페이스에서 이벤트를 정의합니다.
* @event chat."#channel"."op:announce-motd"
*/

위는 멤버 이름에 "비정상적"인 문자가 있는 네임스페이스의 예입니다(해시 문자, 대시, 심지어 따옴표). 이를 참조하려면 이름을 따옴표로 감싸기만 하면 됩니다: chat."#channel", chat."#channel"."op:announce-motd", 등등. 이름의 내부 따옴표는 백슬래시로 이스케이프해야 합니다: chat."#channel"."say-\"hello\"".

관련 링크​