使用井号/哈希符号引用JavaScript实例方法

18
这个问题与Ruby文档中为何方法名称前面有一个#号类似。
我理解在Ruby中为什么实例方法名称前面要加上#号,它有助于区分对SomeClass#someMethodSomeObject.someMethod的讨论,并使得rdoc能够工作。我也知道PrototypeJS的作者赞赏Ruby的设计(出于很好的原因),所以他们在文档中使用了#号约定
我的问题是:这是JavaScript开发者通用的标准做法吗?还是只有Prototype开发者这么做?
换句话说,我在注释/文档中提到实例方法时,是否应该像这样引用:SomeClass#someMethod?或者我的文档应该提到“SomeClass.someMethod”?
2个回答

13

没有,我还没有遇到另一个使用这种符号的JavaScript项目。

虽然在许多编程语言中Class.methodName表示类方法,例如String.fromCharCode,但是在JavaScript中,它表示实例方法。你通常更需要讨论实例方法。通过myinstance.methodName调用的方法不会是MyClass.methodName,而是MyClass.prototype.methodName,而且MyClass.prototype是很麻烦的需要不断重复的。

(标准JS库混淆了这一点,使得许多实例方法也有相应的类方法。但它们是不同的函数。)

在注释/文档中将实例方法称为SomeClass#someMethod是否合适?

按照自己的喜好和易读性进行。这里没有标准规定。


好的回答。那么,如果你正在阅读我的文档,并且我一贯使用“#”来指定实例方法,那么你认为这对你来说清晰明了吗? - Josh
1
从其他编程语言的角度来看,这应该很清晰易懂。我并不指望 JavaScript 的作者们都知道它,但希望通过上下文可以理解! - bobince

8

1
当然是我第一次看到它。这是类比于链接的URL页面#片段语法。 - bobince
啊,它具体说明:package.class#member是任何有效的程序元素名称,可以引用—包、类、接口、构造函数、方法或字段名称—除了在成员名称之前的字符应该是一个井号(#)。 - Josh
如上所述,哈希符号(#)而不是点号(.)将成员与其类分开。这使得Javadoc工具能够解决歧义,因为点号还分隔类、嵌套类、包和子包。 - Knu
从这个答案中的javadoc.html链接中,您将找到大量信息。有关哈希符号的相关信息和原因,请运行单词搜索:“package.class#member”,以使您进入正确的位置。 - kaicarno
JavaDoc定义的不同语法的更直接/完整链接,您可能在某人使用此符号时也会看到:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javadoc.html#package.class - John Christopher Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接