2013-10-03 10 views
0

Смотрите мой пример ниже:Методы класса Javascript вне класса?

(function() { 
    // Initialize the socket & handlers 
    var connectToServer = function() { 
    var warbleSocket = new SockJS('http://url.com:5555/warble'); 

    warbleSocket.onopen = function() { 
     clearInterval(connectRetry); 
     $('.connect-status') 
     .removeClass('disconnected') 
     .addClass('connected') 
     .text('Connected'); 
    }; 

    warbleSocket.onmessage = function(e) { 
     $('#warble-msg').text(e.data); 
    }; 

    warbleSocket.onclose = function() { 
     clearInterval(connectRetry); 
     connectRetry = setInterval(connectToServer, 1000); 
     $('.connect-status') 
     .removeClass('connected') 
     .addClass('disconnected') 
     .text('Disconnected'); 
    }; 

    // Connect the text field to the socket 
    $('.msg-sender').off('input').on('input', function() { 
     warbleSocket.send($('.msg-sender input').val()); 
    }); 
    }; 
    var connectRetry = setInterval(connectToServer, 1000); 



    connectRetry.warbleSocket.send("Hi there"); 

})(); 

Что я хотел бы, чтобы иметь возможность получить доступ к warbleSocket.send снаружи connectRetry

Как я могу это сделать?

ответ

0

выставить API из IIFE в JS:

... 
    return { 
     send: warbleSocket.send 
    } 
})(); 

http://benalman.com/news/2010/11/immediately-invoked-function-expression/

+0

Couldent получить эту работу я получаю 'connectToServer.send не function' – Alosyius

+0

видеть мое редактирование, удаление '()' – shem86

+0

Это похоже на работу, но она ломает эту строку при попытке повторно подключиться: 'connectRetry = setInterval (connectToServer, 1000);' am get this error: 'SyntaxError: missing] после списка элементов' – Alosyius

Смежные вопросы