-1

我正在阅读一本关于 javascript 的书,在其中一个示例中,他们显示了要在示例中使用的这两个代码块:

    showTipListener: function(event)
    {
        Tooltips.showTip(this);
        Core.preventDefault(event);
    }
    hideTipListener: function(event)
    {
        Tooltips.hideTip(this);
    }

    var Tooltips = 
    {
        init: function()
        {
            var links = document.getElementsByTagName("a");

            for (var i = 0; i < links.length; i++)
            {
                //Every link is going to need a title attribute in the HTML
                var title = links[i].getAttribute("title");

                if (title && title.length > 0)
                {
                    Core.addEventListener(links[i], "mouseover", Tooltips.showTipListener);
                    Core.addEventListener(links[i], "focus", Tooltips.showTipListener);
                    Core.addEventListener(links[i], "mouseout", Tooltips.showTipListener);
                    Core.addEventListener(links[i], "blur", Tooltips.showTipListener);

                }
            }
        }}//I also had to add this extra closing bracket to avoid errors? Don't understand why
    }

我担心的是第一个代码示例参考第二个代码示例在哪里?

我以前从未使用过这种语法(如第二个代码示例所示)来定义 javascript 函数:

    functionName: function(passedParam)
    {
        //function body
    }

以上只是一个例子,不是我的代码的一部分。

也许这些功能将在 Tooltips 对象内?这是我的一个想法,所以我做到了,将两个函数放在 ToolTips 对象的括号内。现在,我在 FireBug 中收到此错误: 我的 FireBug 错误

我只是在寻找任何人必须提供的帮助和指导。我对 javascript 并不陌生,但对以这种方式定义函数很陌生。

4

3 回答 3

2

看一看:

var whatever = {                  //object
    add: function(a, b){            //function 1
        return a + b;
    },
    minus: function(a, b){          //function 2
        return a - b;
    }
}

whatever.add(1,1); //returns 2
whatever.minus(1,1); //returns 0

不是定义函数的新方法。这只是将对象的属性(或任何你称之为的)设置为函数,类似于:

var whatever = {
    city: "NYC",
    date: +new Date()
};
于 2012-11-15T04:57:22.680 回答
0

嘿,我会看看这两个资源。他们有一些关于如何更好地编写 javascript 的很棒的技巧

https://github.com/rwldrn/idiomatic.js/

http://shichuan.github.com/javascript-patterns/

于 2012-11-15T04:58:06.887 回答
0

两个顶级函数显然是Tooltips对象的成员,因为这就是它们在第二个片段中的调用方式。看

Core.addEventListener(links[i], "mouseover", Tooltips.showTipListener);

你的第一个片段会更有意义

var Tooltips = {
    showTipListener: function(event)
    {
        Tooltips.showTip(this);
        Core.preventDefault(event);
    }
    hideTipListener: function(event)
    {
        Tooltips.hideTip(this);
    }
};
于 2012-11-15T04:57:37.970 回答