代码之家  ›  专栏  ›  技术社区  ›  user469652

这个javascript的目的是什么样的设计模式?

  •  1
  • user469652  · 技术社区  · 15 年前
        if (!window['console']) {
            window.console = {
            log: function(msg) {}
            }
        }
    
    
    $(window).ready(function() {
        Site.onReady();
    });
    
    
    
        var Site = {
            host: null,
            path: null,
            etc..
    

    还有var助手,var站点,看起来不错,但是不明白它的用途吗?有人知道吗?

    3 回复  |  直到 15 年前
        1
  •  3
  •   JustcallmeDrago Vivek    15 年前
    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() ,这是应该避免的事情(只需将$(window.ready()放在定义站点的位置下方)

    对于这个特定的代码段:

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

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

    函数myfunc()//我们现在可以在任何地方使用myfunc,这可能是不需要的 site.onready(); }

    $(window).ready(myFunc);
    

    最后:

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

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

        2
  •  0
  •   Jason McCreary    15 年前

    看起来它初始化了页面上需要的几个全局对象。例如 console 它在firefox/firebug中可用于日志记录,但不适用于其他浏览器。所以通过检查 window['console'] 必要时添加它,您可以信任可以调用的javascript代码 console.log() 不会导致错误。

    我假设站点、助手等都做类似的事情。

        3
  •  0
  •   hvgotcodes    15 年前

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

    console.log('something')
    

    即使浏览器不支持它。