我正在阅读一本关于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中收到此错误:
我只是在寻找任何人提供的帮助和指导。我不是javascript的新手,但我很擅长以这种方式定义函数。
答案 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)