page.trendDescriptions = {}如何;在给定的代码片段中工作?

时间:2013-07-16 22:23:59

标签: javascript jquery

我从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的其他引用。

1 个答案:

答案 0 :(得分:1)

  

将此处定义为脚本标记的第一行是否正确?

     
    

您不应在语句的开头使用对象文字。这将导致错误或不按预期运行,因为{将被解释为块的开头。

  

此引文的目标是

等构造
{init: function(){/* do something*/}}.init();

实际上语句以对象文字开头。很奇怪?是的,无论如何你永远不会使用这样的代码。在你的情况下,

var page = {};

对象文字在赋值语句中。这里没问题,完全没问题。


  

我无法理解js如何访问此变量page.

然后它会自动引用一个全局变量。实际上你甚至已经在你的第一个片段中定义了这样的一个,并将它初始化为一个空对象。你包含的外部js然后在它上面定义了一个trendDescriptions属性并且愉快地访问了几次。