用于在javascript中定义函数的不同语法

时间:2012-11-15 04:54:01

标签: javascript function object

我正在阅读一本关于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中收到此错误: My FireBug error

我只是在寻找任何人提供的帮助和指导。我不是javascript的新手,但我很擅长以这种方式定义函数。

3 个答案:

答案 0 :(得分: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()
};

答案 1 :(得分: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);
    }
};

答案 2 :(得分:0)

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

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

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