Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   JS классы - как объединить функции в класс (https://javascript.ru/forum/events/22796-js-klassy-kak-obedinit-funkcii-v-klass.html)

olga153b 01.11.2011 02:22

JS классы - как объединить функции в класс
 
И снова сдрасте)

Помогите пожалуйста с такой проблемой. Я попробую вкратце описать все как есть. Я построил сайт таким образом - после того как браузер получает весь html код, он вдобавок редактируется js-ом. Есть главный файл main.js, в котором находятся все функции (классы не использовал вообще ни в одном куске кода, кроме как jQuery). После него подключается следующий файл, но в зависимости от страницы он может быть разным, т. е. если пользователь зашел на страницу www.site.com/user, то подключится user.js, если на www.site.com/messages - messages.js. В main.js есть такое:

$(document).ready(function(){
    size();
    funcs();
    ...
})


ну и дальше в каждом файле user.js, messages.js и во всех остальных, которые подключаются по той же логике есть свои ф-ции size() и funcs() и еще не мало.

Я хочу сделать один файл supermain.js, в котором будут все функции из всех файлов и что бы принцип работы был таков:

$(document).ready(function(){
    if(param=='user')obj=new User();
    else if(param=='messages')obj=new Messages()
    obj.size();
    obj.funcs();
    ...
})


что б классах User и Messages были все функции из файлов user.js, messages.js соответственно.

Загуглил что делать в таких случаях, из того что я прочитал я даже и не понял что вообще происходит с классами в js.

Подскажите как легче и разумней будет.

Для примера попробую описать, как построен файл user.js:

function size(){
    alert('a')
}

function funcs(){
    helloWord('Hello Word!')
}

function helloWord(p){
    alert(p)
}


Заранее спасибо за ответы

trikadin 01.11.2011 02:37

Забавно - вы реализовали полиморфизм, одну из ключевых концепций ООП, без объектно-ориентированных средств))

Почитайте тут. Всё хорошо изложено. Если не разберётесь - спрашивайте, что непонятно.

olga153b 01.11.2011 13:47

в общем попробовал вот так:

function test(){
    
    this.z=function(h){
        alert(h);
        ha();
        m();
    }
    
    this.ha=function(){
        alert('s')
    }
}

var z=new test()
z.z('z')

function m(){
    alert('m')
}


вроде как че-то да получилось. Теперь появился такой вопрос - я часто в тегах делаю так: onclick="ha()", но теперь ha() внутри test, каким образом можно вызвать ha() при onclick? и с точки зрения стандартов языка тот кусок кода, который я написал вверху он соответствует (боюсь как бы не получилось, что в одних браузерах работать будет, в других нет)?

trikadin 01.11.2011 14:13

onclick="z.ha()"


Нормально будет работать) Во всех одинаково.


Часовой пояс GMT +3, время: 04:30.