var User = function() {
this.sex = 'man';
};
var PyhaUser = function() {
this.troll = true;
};
PyhaUser.prototype = new User;
var phpdude = new PyhaUser();
alert(phpdude.sex);
alert(phpdude.troll);
Форум → Программирование → Пыхнуть хотите? → Готовые решения → go.js - классы для JavaScript и другое
go.js - классы для JavaScript и другое
Страницы: ← Предыдущая страница • Следующая страница →
-
25 января 2012 г. 17:11, спустя 3 минуты 15 секунд
Спустя 30 сек. -
25 января 2012 г. 17:13, спустя 2 минуты 8 секунд
В js наследуются объекты вроде, а не классы, ну ладно, тогда покажи мне пример для чего мне это может потребоваться (:
ООП одно везде, набор взаимодействующих объектов, каждый инкапсулирует в себе свои данные.
У каждого есть набор методов, который зачастую одинаков у большого количества объектов.
Почему бы не назвать эту совокупность каким-нибудь названием, например "класс", пускай соответствующей синтаксической конструкции в JS и нет.Спустя 70 сек.PyhaUser.prototype = new User;
Конструктор new User может принимать какие-то аргументы и выполнять какие-то действия по инициализации объекта. При создании прототипа для "наследника" они явно излишни. Что делать? -
25 января 2012 г. 17:14, спустя 42 секунды
Ivan, нуу, ты вызываешь конструктор, лишний раз создаешь объект - некрасиво как бы
а что если конструктор ожидает аргументов? -
25 января 2012 г. 17:16, спустя 2 минуты 10 секунд
Кроме того прямое присвоение PyhaUser.prototype рвёт цепочку constructor.prototype, в следствии чего до предков уже не достучаться. -
25 января 2012 г. 17:26, спустя 10 минут 29 секунд
Покажите пример, когда вам реально это понадобилось, и стандартного прототипа вам не хватило, я пример увижу и реально пойму вас. -
25 января 2012 г. 17:40, спустя 13 минут 59 секунд
Есть допустим контрол (виджет) - просто div, а в нём кнопочки-хуёпочки, жмёшь на них и что-то происходит. И таких контролов на странице несколько.
Пишем "класс" (прототип) и для каждого контрола создаём объект, передавая ему в конструктор слой контрола.
И внутри уже из слоя достаются кнопки, на них вешаются события и что-то происходит.
Данные инкапсулированы в объекте, код думает о своём виджите, а сколько их ещё на странице ему всё равно.
Это зачем "классы" нужны.
И вот есть другие виджеты, у которых всё почти тоже самое, но некоторые аспекты поведения немного другие.
Чего делать? По человечески нужно сделать "абстрактный класс", а от него унаследовать ещё парочку и переопределить в них только то, что для них уникально.
Собственно все те же принципы действуют, хоть в классовом, хоть в прототипном ООП.Спустя 112 сек.Ну и проблема с конструктором - конструктор что-то делает: достаёт из слоя элементы, вешает на них события, поэтому так делать:ChildClass.prototype = new ParentClass();
некошерно.
Ну и ещё куча нюансов. -
-
-
-
25 января 2012 г. 19:42, спустя 15 минут 19 секунд
убедил/не убедил на пiха.ру.Спустя 14 сек.борьба убеждений на пiха.ру -
25 января 2012 г. 21:02, спустя 1 час 20 минут 57 секунд
Не убедил
Напиши конструктор форм на js - убедишься… -
-
25 января 2012 г. 22:31, спустя 1 час 13 минут 11 секунд
хы хы, в разы меньше строк но значительно аргументированнее) -
27 января 2012 г. 13:53, спустя 1 день 15 часов 21 минуту
И вот есть другие виджеты, у которых всё почти тоже самое, но некоторые аспекты поведения немного другие. Чего делать?
Ну, можно передавать аспекты поведения в качестве параметров в функцию. А можно записать в отдельный массив, и из функции обращаться к этому массиву. То есть вопрос не "зачем ООП", а "почему нельзя сделать чисто на функциях?".
Конструктор форм - это несколько функций ("Добавить поле", "Проверить форму перед отправкой"…) и массив с описаниями полей. Зачем здесь наследование?.. -
27 января 2012 г. 13:59, спустя 6 минут 24 секунды
stopkran, всё можно сделать чисто на функциях (процедурах). А можно вообще без функций и даже без циклов обойтись.
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!