25.07.2012, 17:28
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от devote
|
возможно, но когда у вас будут огромных размеров классы, не особо удобно будет открывая файл, матать в самый низ что бы посмотреть от чего он унаследован и т.д. И есть ли вообще доп параметры.
|
Ну ок.
Тогда следующее тролль-предложение: объединить доп. параметры с "прототипом". Т.к. это и не совсем прототип, из-за свойства constructor, то и доп. параметры вполне неплохо туда впишутся.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
25.07.2012, 17:39
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от B~Vladi
|
объединить доп. параметры с "прототипом".
|
а вот это я пока не знаю как реализовать, так как данные в прототипе, не доступны до тех пор пока не будет создан экземпляр класса. И вытащить из него что-то будет тяжко в том случае если его передадут таким образом:
Class("Foo", function() { // функция врапер
var private = "1";
return {
__extends: "Bar",
constructor: function() {
}
}
});
вот параметр __extends мне не будет доступен в момент объявления класса, так как он будет завернут в функцию, а что бы его получить придется инициализировать приватные параметры. То-есть вызвать функции врапер. что не есть гуд, потому как я вызываю его лишь когда создают экземпляр
|
|
25.07.2012, 17:51
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от devote
|
а вот это я пока не знаю как реализовать, так как данные в прототипе, не доступны до тех пор пока не будет создан экземпляр класса.
|
Ок, понятно. Если нужна поддержка функции-враппера, то да.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
25.07.2012, 18:52
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от devote
|
ну изменения в своих классах можно любые делать, а если ты имел ввиду про изменения в ядре создания классов, хм.. не думаю что это кому то навредит.
|
Говоря прямо, я о тебе забочусь и тех кто решит заглянуть в исходник
Сообщение от devote
|
возможно, но когда у вас будут огромных размеров классы, не особо удобно будет открывая файл, матать в самый низ что бы посмотреть от чего он унаследован и т.д. И есть ли вообще доп параметры.
|
В vim никуда мотать не надо будет, в идеале, я могу переместиться в конец класса с помощью одного нажатия клавиши. Все зависит от того, где курсор расположен. Что же касается расположения параметра с опциями, я бы все же на втором месте его расположил. Два варианта вызова - это не так сложно, по сравнению с 12-ю. Разве что не мешал бы статические свойства и опции (см. выше).
Сообщение от devote
|
То-есть вызвать функции врапер. что не есть гуд, потому как я вызываю его лишь когда создают экземпляр
|
А почему только при создании? Почему бы не вызвать его один раз при объявлении и запомнить полученную информацию?
|
|
25.07.2012, 19:07
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от x-yuri
|
Говоря прямо, я о тебе забочусь и тех кто решит заглянуть в исходник
|
Ну там с эти проблем вроде как нету.
Сообщение от x-yuri
|
Разве что не мешал бы статические свойства и опции (см. выше).
|
но ведь опций не так много, разве это может навредить? да и статические параметры объявляются лишь раз при объявлении класса. А больше к ним и не притрагиваемся в будущем при создании экземпляров.
Сообщение от x-yuri
|
Почему бы не вызвать его один раз при объявлении и запомнить полученную информацию?
|
потому что на каждый экземпляр создаются свои собственные приватные переменные, если вызвать один раз для всех. То они и будут общие для всех экземпляров, что не будет правильно.
|
|
25.07.2012, 22:21
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от devote
|
но ведь опций не так много, разве это может навредить?
|
Получается, что в параметра хранится 2 вида информации: опции и статические свойства. Хотя бы, как назвать такой параметр? optionsAndStaticData?
Сообщение от devote
|
потому что на каждый экземпляр создаются свои собственные приватные переменные, если вызвать один раз для всех.
|
Получается,
1. Ты сам создаешь конструктор, который вызывает сначала функцию-обертку, а потом конструктор указанный пользователем? Другими словами функция-обертка - часть конструктора?
2. Попытавшись просмотреть код конструктора, я получу код твоей функции, а не той, которую я передал в Class?
|
|
25.07.2012, 23:36
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от x-yuri
|
Хотя бы, как назвать такой параметр? optionsAndStaticData?
|
над этим я еще подумаю конечно.
Сообщение от x-yuri
|
1. Ты сам создаешь конструктор, который вызывает сначала функцию-обертку, а потом конструктор указанный пользователем? Другими словами функция-обертка - часть конструктора?
|
можно сказать и так, поэтому встроенный instanceof не работает с этими классами, это в первую очередь идут проблем из ИЕ, так как там юзаем VB и он то нам и выдает кучу гемора. Вот поэтому Class.Foo.prototype.constructor не является тем что хотелось бы ожидать.
Сообщение от x-yuri
|
Попытавшись просмотреть код конструктора, я получу код твоей функции, а не той, которую я передал в Class?
|
смотря откуда смотреть, если смотреть в созданном экземпляре то конечно мы получим то что надо. Если будем смотреть напрямую в цепи прототипов, то увы увидим совсем не то что хотелось бы видеть.
|
|
26.07.2012, 08:47
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Очередное обновление, сделал так как предложил x-yuri,
Class("Foo", {
context: window,
extends: "Bar",
implements: [ "IBase", "IPersistent" ],
static: {
STATIC_PARAM: 1,
STATIC_CONST: "lala"
}
}, {
// code
});
|
|
27.07.2012, 00:22
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от devote
|
можно сказать и так, поэтому встроенный instanceof не работает с этими классами, это в первую очередь идут проблем из ИЕ, так как там юзаем VB и он то нам и выдает кучу гемора. Вот поэтому Class.Foo.prototype.constructor не является тем что хотелось бы ожидать.
|
А в чем прикол двух-конструкторов? При чем первый (обертка) ведь не имеет доступа к параметрам вызова.
|
|
27.07.2012, 00:32
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от x-yuri
|
А в чем прикол двух-конструкторов?
|
дык двух и нет, есть один конструктор который строит экземпляр, назначает аксессоры, и т.д. а второй по сути тот что ты объявишь/не объявишь в своем классе. То есть обертка, нужна лишь в том случае если хочешь сделать приватные свойства, которые будут распространятся лишь на экземпляр, тоесть на каждый экземпляр свои переменные.
|
|
|
|