这个javascript的目的,它使用了什么样的设计模式?

时间:2010-11-03 01:59:24

标签: javascript design-patterns javascript-framework

    if (!window['console']) {
        window.console = {
        log: function(msg) {}
        }
    }


$(window).ready(function() {
    Site.onReady();
});



    var Site = {
        host: null,
        path: null,
        etc..

还有var Helpers,var Site,看起来还不错,但目的不明白?有谁知道吗?

3 个答案:

答案 0 :(得分:3)

if (!window['console']) {
    window.console = {
    log: function(msg) {}
    }
}

这将检查当前是否已经分配给window.console的任何内容,如果没有,它会分配一个具有“log”功能的自定义对象。这使得window.console.log无论如何都可以使用,如果已经有一个本机(或早期定义)的函数版本,它将被使用。

$(window).ready(function() {
    Site.onReady();
});



    var Site = {
        host: null,
        path: null,
        etc..

我不知道这是为了什么,但Site在放入$(window).ready()的匿名回调时是未定义的,这是应该避免的(只需放置$(窗口).ready()下面定义了站点)

至于这个特定的片段:

$(window).ready(function() {
        Site.onReady();
    });

这会将一个匿名函数传递给$(window).ready()函数,该函数将在DOM准备就绪时调用它。直接使用匿名函数可以避免命名函数,然后在以后传递它。

function myFunc(){//我们现在可以在任何地方使用myFunc,这可能是不需要的     Site.onReady(); }

$(window).ready(myFunc);

最后:

   var Site = {
            host: null,
            path: null,
            etc..

var myVar = {key1:"value", key2:"other_value"};语法创建一个新对象,其中的键和值可以像这样使用:myVar.key1 = "newValue!"

答案 1 :(得分:0)

看起来它初始化了页面上预期的几个全局对象。例如console,它可以在Firefox / Firebug中用于日志记录,但不能用于其他浏览器。因此,通过检查是否存在window['console']并在必要时添加它,您可以信任可以调用console.log()的JavaScript代码而不会导致错误。

我认为Site,Helpers等都做类似的事情。

答案 2 :(得分:0)

它在窗口对象上定义一个'console'对象文字,如果它还没有,它有一个函数日志。这意味着您可以在代码中编写

console.log('something')

即使浏览器不支持它。