我从http://cektkp.com/twittermarquee/twitmarquee.js获取代码以使用推特风格的代码:
<script type=\"text/javascript\">
//<![CDATA[
var page={};
$(function() {new FrontPage().init()});
//]]>
</script>
我知道有一个匿名的javascript函数可以创建一个FrontPage类的实例和init的它。 var page={};
是一个对象文字,但在此处将其定义为脚本标记的第一行是否正确?
我在JS教程You should not use an object literal at the beginning of a statement. This will lead to an error or not behave as you expect, because the { will be interpreted as the beginning of a block.
另外,在我的javascript文件中,我有以下代码:
Drupal.behaviors.stocksTicker = {
attach: function( context, settings ) {
page.trendDescriptions = {};
loadTrendDescriptions();
}
}
.
.
.
var processSummizeInternal = function (B) {
var J = page.trendDescriptions[page.query];
.
.
.
function loadTrendDescriptions() {
$("#trends a").each(function () {
var A = $(this);
var C = A.parent().find("em");
if (C.length) {
var B = A.text();
var D = C.text().replace(new RegExp(B.replace(/([^\w])/gi, "\\$1"), "gi"), "<strong>" + B + "</strong>");
var E = A.attr("title").length ? A.attr("title") : A.attr("name");page.trendDescriptions[E] = [B, D]
}
})
}
我无法理解js如何访问此变量page.
?任何其他文件中的其他地方都没有page
的其他引用。
答案 0 :(得分:1)
将此处定义为脚本标记的第一行是否正确?
您不应在语句的开头使用对象文字。这将导致错误或不按预期运行,因为
{
将被解释为块的开头。
此引文的目标是
等构造{init: function(){/* do something*/}}.init();
实际上语句以对象文字开头。很奇怪?是的,无论如何你永远不会使用这样的代码。在你的情况下,
var page = {};
对象文字在赋值语句中。这里没问题,完全没问题。
我无法理解js如何访问此变量
page.
?
然后它会自动引用一个全局变量。实际上你甚至已经在你的第一个片段中定义了这样的一个,并将它初始化为一个空对象。你包含的外部js然后在它上面定义了一个trendDescriptions
属性并且愉快地访问了几次。