Цель этого javascript, какой шаблон дизайна он использовал? - PullRequest
1 голос
/ 03 ноября 2010
    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 ]

3 голосов
/ 03 ноября 2010
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!"

0 голосов
/ 03 ноября 2010

это определение литерала 'console' для объекта окна, если он еще не существует, у которого есть журнал функций.Это означает, что в вашем коде вы можете написать

console.log('something')

, даже если браузер не поддерживает его.

0 голосов
/ 03 ноября 2010

Похоже, что он инициализирует несколько глобальных объектов, которые ожидаются на странице.Например console, который доступен в Firefox / Firebug для ведения журнала, но не в других браузерах.Поэтому, проверяя наличие window['console'] и добавляя его при необходимости, вы можете доверять JavaScript-коду, который вы можете вызвать console.log(), не вызывая ошибки.

Я предполагаю, что сайт, помощники и т. Д. Все делают нечто подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...