Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 25.07.2012, 16:28
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Сообщение от devote
возможно, но когда у вас будут огромных размеров классы, не особо удобно будет открывая файл, матать в самый низ что бы посмотреть от чего он унаследован и т.д. И есть ли вообще доп параметры.
Ну ок.

Тогда следующее тролль-предложение: объединить доп. параметры с "прототипом". Т.к. это и не совсем прототип, из-за свойства constructor, то и доп. параметры вполне неплохо туда впишутся.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #52 (permalink)  
Старый 25.07.2012, 16:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от B~Vladi
объединить доп. параметры с "прототипом".
а вот это я пока не знаю как реализовать, так как данные в прототипе, не доступны до тех пор пока не будет создан экземпляр класса. И вытащить из него что-то будет тяжко в том случае если его передадут таким образом:
Class("Foo", function() { // функция врапер
    var private = "1";
    return {
        __extends: "Bar",
        constructor: function() {
        }
    }
});
вот параметр __extends мне не будет доступен в момент объявления класса, так как он будет завернут в функцию, а что бы его получить придется инициализировать приватные параметры. То-есть вызвать функции врапер. что не есть гуд, потому как я вызываю его лишь когда создают экземпляр
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #53 (permalink)  
Старый 25.07.2012, 16:51
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Сообщение от devote
а вот это я пока не знаю как реализовать, так как данные в прототипе, не доступны до тех пор пока не будет создан экземпляр класса.
Ок, понятно. Если нужна поддержка функции-враппера, то да.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #54 (permalink)  
Старый 25.07.2012, 17:52
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от devote
ну изменения в своих классах можно любые делать, а если ты имел ввиду про изменения в ядре создания классов, хм.. не думаю что это кому то навредит.
Говоря прямо, я о тебе забочусь и тех кто решит заглянуть в исходник

Сообщение от devote
возможно, но когда у вас будут огромных размеров классы, не особо удобно будет открывая файл, матать в самый низ что бы посмотреть от чего он унаследован и т.д. И есть ли вообще доп параметры.
В vim никуда мотать не надо будет, в идеале, я могу переместиться в конец класса с помощью одного нажатия клавиши. Все зависит от того, где курсор расположен. Что же касается расположения параметра с опциями, я бы все же на втором месте его расположил. Два варианта вызова - это не так сложно, по сравнению с 12-ю. Разве что не мешал бы статические свойства и опции (см. выше).

Сообщение от devote
То-есть вызвать функции врапер. что не есть гуд, потому как я вызываю его лишь когда создают экземпляр
А почему только при создании? Почему бы не вызвать его один раз при объявлении и запомнить полученную информацию?
Ответить с цитированием
  #55 (permalink)  
Старый 25.07.2012, 18:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от x-yuri
Говоря прямо, я о тебе забочусь и тех кто решит заглянуть в исходник
Ну там с эти проблем вроде как нету.

Сообщение от x-yuri
Разве что не мешал бы статические свойства и опции (см. выше).
но ведь опций не так много, разве это может навредить? да и статические параметры объявляются лишь раз при объявлении класса. А больше к ним и не притрагиваемся в будущем при создании экземпляров.

Сообщение от x-yuri
Почему бы не вызвать его один раз при объявлении и запомнить полученную информацию?
потому что на каждый экземпляр создаются свои собственные приватные переменные, если вызвать один раз для всех. То они и будут общие для всех экземпляров, что не будет правильно.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #56 (permalink)  
Старый 25.07.2012, 21:21
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от devote
но ведь опций не так много, разве это может навредить?
Получается, что в параметра хранится 2 вида информации: опции и статические свойства. Хотя бы, как назвать такой параметр? optionsAndStaticData?

Сообщение от devote
потому что на каждый экземпляр создаются свои собственные приватные переменные, если вызвать один раз для всех.
Получается,

1. Ты сам создаешь конструктор, который вызывает сначала функцию-обертку, а потом конструктор указанный пользователем? Другими словами функция-обертка - часть конструктора?

2. Попытавшись просмотреть код конструктора, я получу код твоей функции, а не той, которую я передал в Class?
Ответить с цитированием
  #57 (permalink)  
Старый 25.07.2012, 22:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от x-yuri
Хотя бы, как назвать такой параметр? optionsAndStaticData?
над этим я еще подумаю конечно.

Сообщение от x-yuri
1. Ты сам создаешь конструктор, который вызывает сначала функцию-обертку, а потом конструктор указанный пользователем? Другими словами функция-обертка - часть конструктора?
можно сказать и так, поэтому встроенный instanceof не работает с этими классами, это в первую очередь идут проблем из ИЕ, так как там юзаем VB и он то нам и выдает кучу гемора. Вот поэтому Class.Foo.prototype.constructor не является тем что хотелось бы ожидать.

Сообщение от x-yuri
Попытавшись просмотреть код конструктора, я получу код твоей функции, а не той, которую я передал в Class?
смотря откуда смотреть, если смотреть в созданном экземпляре то конечно мы получим то что надо. Если будем смотреть напрямую в цепи прототипов, то увы увидим совсем не то что хотелось бы видеть.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #58 (permalink)  
Старый 26.07.2012, 07:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Очередное обновление, сделал так как предложил x-yuri,
Class("Foo", {
    context: window,
    extends: "Bar",
    implements: [ "IBase", "IPersistent" ],
    static: {
        STATIC_PARAM: 1,
        STATIC_CONST: "lala"
    }
}, {
    // code
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #59 (permalink)  
Старый 26.07.2012, 23:22
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от devote
можно сказать и так, поэтому встроенный instanceof не работает с этими классами, это в первую очередь идут проблем из ИЕ, так как там юзаем VB и он то нам и выдает кучу гемора. Вот поэтому Class.Foo.prototype.constructor не является тем что хотелось бы ожидать.
А в чем прикол двух-конструкторов? При чем первый (обертка) ведь не имеет доступа к параметрам вызова.
Ответить с цитированием
  #60 (permalink)  
Старый 26.07.2012, 23:32
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от x-yuri
А в чем прикол двух-конструкторов?
дык двух и нет, есть один конструктор который строит экземпляр, назначает аксессоры, и т.д. а второй по сути тот что ты объявишь/не объявишь в своем классе. То есть обертка, нужна лишь в том случае если хочешь сделать приватные свойства, которые будут распространятся лишь на экземпляр, тоесть на каждый экземпляр свои переменные.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование JavaScript на платформах Android и iPhone monolithed Мобильный JavaScript 32 08.05.2012 13:17
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 14:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 18:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 19:34
Использование dll в javascript. alexKniaz Общие вопросы Javascript 5 28.10.2008 17:56