我一直在atom/apm code中寻找函数定义或包依赖的位置。它在第93行的src/view.coffee
中被调用
items.push(repository.underline)
items.push(pack.description.replace(/\s+/g, ' ')) if pack.description
但我不确定该方法的来源,或者我如何能够在节点REPL中重现它。它来自哪里?
答案 0 :(得分:1)
repository.underline
不是方法(没有括号),它是repository
变量的属性。
repository
variable来自pack.repository.url
or pack.repository
。
pack
is populated from a JSON HTTP API response。 repository
位于metadata
中,来自versions[version]
中的JSON。 version
由getLatestCompatibleVersion
决定。
如果显示sample response for the minimap package,则特定版本的所有repository
值都是纯字符串,因此.underline
属性不是来自那里的对象。因为它们是纯字符串,所以可能会扩展javascript String原型以包含underline
属性,但是什么?
从sample search看起来.underline
用于终端类型输出。查看package.json
dependencies, the colors
package works in that space。
colors
adds a number of properties to the string prototype,包括underline
。
这是为什么扩展原型会让人感到困惑的一个很好的例子。