2016-07-11 2 views
0

Есть ли способ создать класс с функциями, которые будут вызываться из других скриптов на странице после загрузки?создать класс с функциями

function WebUI() { 
    this.updateLoadingMessage = function (message) { 
     $("#loading-header").html(message); 
    }; 

    addAlertInfo = function (message) { 
    }; 

    addAlertWarning = function (message) { 
    }; 

    addAlertDanger = function (message) { 
    }; 

    addAlertSuccess = function (message) { 
    }; 
}; 

вызовов из других мест/скриптов

WebUI.addAlertInfo("testing"); 

Сообщает мне, что addAlertInfo не является функцией.

+0

Просьба уточнить ожидаемый результат, может быть примером. –

+0

Я хочу разместить кучу общих функций в течение одного звонка, который я могу вызвать из любого другого скрипта. – Tsukasa

+1

Вы пытаетесь создать экземпляр, как в 'var ui = new WebUI(); ui.addAlertInfo ("тестирование") '? Или просто объект пространства имен, вы не создаете экземпляр, а вместо этого просто запасите кучу статических функций в своей функции WebUI в качестве свойств? Теперь у вас нет ни того, ни другого. – jfriend00

ответ

1

Вы близко. См. «Определение методов» по ​​адресу https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects. Вы можете сделать что-то вроде:

WebUI = { 
    addAlertInfo: function(message) { 
     // do stuff 
    } 
}; 
+0

Кроме того, у них также определен конструктор WebUI. Неясно, чего хочет OP. – jfriend00

+0

@ jfriend00 Достаточно справедливо. Я лично справился бы с этим, предоставив объекту WebUI функцию 'init' и вызывая' WebUI.init() 'на странице или в JS после определения' WebUI'. – ceejayoz

+0

Спасибо, это то, что я искал. – Tsukasa

1

Вы можете сделать это несколькими способами: Несколько которые приходят на ум, являются:

var WebUI = { 
    addAlertInfo: function() { 
     ... 
    } 
} 

Или как метод на функции, которые могут выступать в качестве конструктора:

function WebUI() { 
    ... 
} 

WebUI.addAlertInfo = function() { 
} 

Или в ES6:

class WebUI { 
    static addAlertInfo() { 
     ... 
    } 
} 

Все это будет называться как:

WebUI.addAlertInfo(); 
0

Среди многих способов, два наиболее простым способу сделать это либо с помощью namespacing или Revealing-module-pattern

Вот пример использования пространств имен. Сначала необходимо создать пустой объект

var WebUI ={}; 
WebUI.addAlertInfo=function(){ 
// Rest of the code 
} 

Теперь вы можете позвонить WebUI.addAlertInfo() из любой другой

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