Javascript D3工具提示无法理解源代码

Javascript D3工具提示无法理解源代码,javascript,d3.js,Javascript,D3.js,我的d3分机有问题- 我的问题是我不太懂源代码。我理解何时调用特定的东西,但现在它与整个扩展的关系如何 例如,在这一行:他们声明 function tip(vis) { svg = getSVGNode(vis) if (!svg) return point = svg.createSVGPoint() rootElement.appendChild(node) } 但是我不明白为什么如果我使用控制台logtip我会得到这个函数。因为在代

我的d3分机有问题-

我的问题是我不太懂源代码。我理解何时调用特定的东西,但现在它与整个扩展的关系如何

例如,在这一行:他们声明

function tip(vis) {
      svg = getSVGNode(vis)
      if (!svg) return
      point = svg.createSVGPoint()
      rootElement.appendChild(node)
    }
但是我不明白为什么如果我使用控制台log
tip
我会得到这个函数。因为在代码的后面,它会调用
tip
,比如这里

我以前从未见过这样的情况,
tip
像这样声明为一个普通函数,然后在以后向它添加方法

我更习惯于这样的事情

class Tip {
/**
 * Register actions and filters, plus parse IS settings
 *
 * @uses add_action, add_filter, self::get_settings
 * @return null
 */
function __construct() {
有人能给我解释一下这里发生了什么吗?我对在线特别感兴趣。我试图在源代码中改变方向的处理方式,因为我的实现抛出了错误

我的理解是,它首先以这种方式分配
方向
direction=d3TipDirection
,然后该行(130)将其重新分配给调用时传递的函数

var tip = d3.tip()
.direction(function(d) {
  if (d === 'Freshly Milled Bread' || d === 'Freshly Peeled Banana'){return 'ne';}
  if (d === 'Salt') {return 'nw';}
});
但当它以一种我不理解的方式操纵
dir
(一种
方向的派生)时,它对我来说就中断了。我无法在
未定义
错误上调用
应用

因此,对插件体系结构的一般概述,以及对我在
方向
属性和我在其中的功能方面的错误的更具体的解释,将非常有帮助,并且非常受欢迎

var tip = d3.tip()
.direction(function(d) {
  if (d === 'Freshly Milled Bread' || d === 'Freshly Peeled Banana'){return 'ne';}
  if (d === 'Salt') {return 'nw';}
});