var foo = new Foo();
var fooParam = foo.getParam(); // 1
var bar = new Bar();
var barParam = bar.getParam(); // 1
var barOtherParam = bar.getOtherParam(); // 2
Объявлять методы внутри других методов или конструтора с помощью
this.myMethod = function() {/*… */};
не очень хорошо, так как они будут во всех экземплярах создаваться заново, а не ссылаться на функцию в прототипе. По возможности этого надо избегать.
Я понимаю, подход плох тем, что неудобно скрывать методы, делать их по настоящему приватными. Я в коде использую соглашеие, что приватные методы начинаются с _. Спасает только то, что на боевом сервере весь код выполняется в замыкании. Зато не нужно перекладывать метода из родителя в ребянка for..in
Кажется, более актуально обратное. Допустим, мне не очень нравится слушать музыку в два уха, будучи на улице при оживленном движении транспорта. Вообще иногда полезно одно ухо держать в резерве на всякий случай.
А как же зум? а отключенные картинки? Эм, это решение не верно. К тому же подгрузку сторонних шрифтов каким-либо изуверским способом поддерживаю6т ie, ff3.5, opera10, safari3+ (в ие как всегда заморочки, нужно генерить шрифт weft'ом) В стороне только хром (что довольно странно), но его процент мал и, надеюсь, он подтянется за сафариком ^_^
Лучше использовать обычный @font-face, скоро его использование станет более менее кроссбраузерным.
ЗЫ: видел, что выходили из положения с помощью JS'a и flash, но решение так себе…
ЗЗЫ: к тому же метод мусорит в html, можно, конечно, скриптами текстики парсить -_-
В общем мысль хороша на уровне мысли, в жизни неприменима.
Попробуй избавится от fixed'а. Есть способ, по-моему его предложил Сергей Чикуенок, суть заключается в том, что мы ложим див на всю видимую область, делаем ему overflow:auto, а body — overflow:hidden. Визуально тоже самое, но если положить элемент абсолютно вне дива, он встанет как fixed (это решение правило еще поведение fixed'a с png24 внутри при скроллинге в ff).
Если всякие fixed-приблуды важны — кури в эту сторону ;)
Отвратительно. Лучше юзать developer bar'ы. А для IE бордер вообще гениально, так как обрамить элемент обводкой, расширяя тем самым элемент и развалить всю верстку — это круто о_О.
frujo, бросьте это решение в унитаз. Мало того, что оно мало чем полезно, не кроссбраузерно и может перекрывать родные аутлайны, так оно еще и в глазах мельтишит.
По поводу developer bar'ов: он есть или можно подключить в ie, opera9+, ff, safari3+. В chrome поведение как в сафари, так что инструменты разработчиков есть во всех популярных браузерах. Итак, зачем нужен этот CSS?
Не особо понимаю смысл использования JS и статичной вертски, к JS не привязанной. Код почище, но не проще покурить в сторону canvas/vml — тут и углы чище будут (JS-а больше), зато гибкость в разы увеличивается
Помниццо мне, я юзал собаку при выводе GET'a или POST'a в value input'a, то есть допустим при регистрации пользователя, если он что-то не верно ввел — он отдаст те переменные, что он писал до этого… имхо удобная штука…
Не нравитсо — не пользуй
У меня сейчас dial-up, загружается вся страница. На GPRS с телефона грузится также шикарно. И я не понимаю, как так получается что с GPRS медленнее, чем с модема.. там же асинхронный канал, входящий поток шире, бла-бла-бла...
Например, опишем родителя:
/**
* constructor
*/
var Foo = function() {
/** type {number} */
this.param = 1;
}
/**
* return {number}
*/
Foo.prototype.getParam = function() {
return this.param;
}
Функция, реализующая наследование:
/**
* Реализует прототипное наслдование.
* Взял из Google Closure Library.
* @param {Function} childCtor Конструктор потомка
* @param {Function} parentCtor Конструктор родителя
*/
var inherits = function(childCtor, parentCtor) {
/**
* Создаем пустой конструктор
* constructor
*/
function tempCtor() {};
// Складываем прототип родителя в прототип временного
// конструктора
tempCtor.prototype = parentCtor.prototype;
// В superClass кладем ссылку на прототип родителя.
// Нужно чтобы вызывать методы родителя.
childCtor.superClass = parentCtor.prototype;
// В прототип ребенка кладем экземпляр пустого
// конструтора. Не забываем, что все методы родитля
// лежат в его прототипе, а значит передадутся
// ребенку
childCtor.prototype = new tempCtor();
// Запоминаем конструктор
childCtor.prototype.constructor = childCtor;
};
Теперь ребенка:
/**
* constructor
* @extends
*/
var Bar = function() {
// в superClass лежит ссылка на прототип родителя,
Foo.call(this);
/** type {number} */
this.otherParam = 2;
}
// Наследуемся от Foo, код наследования чуть выше.
inherits(Bar, Foo);
/**
* return {number}
*/
Bar.prototype.getOtherParam = function() {
return this.otherParam;
}
А теперь посмотрим, что получилось:
var foo = new Foo();
var fooParam = foo.getParam(); // 1
var bar = new Bar();
var barParam = bar.getParam(); // 1
var barOtherParam = bar.getOtherParam(); // 2
Объявлять методы внутри других методов или конструтора с помощью
this.myMethod = function() {/*… */};
не очень хорошо, так как они будут во всех экземплярах создаваться заново, а не ссылаться на функцию в прототипе. По возможности этого надо избегать.
Я понимаю, подход плох тем, что неудобно скрывать методы, делать их по настоящему приватными. Я в коде использую соглашеие, что приватные методы начинаются с _. Спасает только то, что на боевом сервере весь код выполняется в замыкании. Зато не нужно перекладывать метода из родителя в ребянка for..in
Интересно, а будут ли они настраиваться?
Лучше использовать обычный @font-face, скоро его использование станет более менее кроссбраузерным.
ЗЫ: видел, что выходили из положения с помощью JS'a и flash, но решение так себе…
ЗЗЫ: к тому же метод мусорит в html, можно, конечно, скриптами текстики парсить -_-
В общем мысль хороша на уровне мысли, в жизни неприменима.
Если всякие fixed-приблуды важны — кури в эту сторону ;)
frujo, бросьте это решение в унитаз. Мало того, что оно мало чем полезно, не кроссбраузерно и может перекрывать родные аутлайны, так оно еще и в глазах мельтишит.
По поводу developer bar'ов: он есть или можно подключить в ie, opera9+, ff, safari3+. В chrome поведение как в сафари, так что инструменты разработчиков есть во всех популярных браузерах. Итак, зачем нужен этот CSS?
Не нравитсо — не пользуй
Короч, я не осознал проблемы.