Сообщение от Cuprum
|
Функция будет является частью небольшого скрипта и действовать только в его рамках
|
ключевые слова "частью небольшого скрипта". Хотелось бы увидеть этот небольшой скрипт...
Сообщение от Cuprum
|
Намекаете, что у функции есть побочные эффекты? Можно поподробнее? Интересно с т. з. получения нового знания.
|
выражения с побочными эффектами - выражения, в которых не только что-то вычисляется, но и что то изменяется. В первую очередь это всякие ++, --. Согласитесь, что проще рассчитывать, что в if у меня только проверяется условие и ничего не меняется. А ведь условие может быть не таким простым. Кроме того, не понятно, зачем вашей функции глобальная переменная. Вроде как по названию складывается впечатление, что она ничего не меняет, а только возвращает. В результате ее проще (и в вашем и в моем понимании) записать так:
function getSel(){
if( window.getSelection )
return window.getSelection();
else
return document.selection.createRange().text;
}
Сообщение от Cuprum
|
Глядя на ваш пример и Octane я, увы, не могу сказать что я вижу (конечно, дело во мне).
|
ну видимо смотрите не с той стороны
Я рассчитвал, что нужно сделать некий компонент "ссылка для цитирования", т.е. я встрачаю в коде
<a id="quote-link" href="#">Цитировать</a>
<script type="text/javascript">new QuoteLink('#quote-link')</script>
и вижу, что при щелчке по этой ссылке происходит копирование выделенного текста (так как не было указано куда, соответственно компонент не доделан). Т.е. я вижу, что происходит, но не вижу как это реализовано. Если мне нужно узнать, как это реализовано я смотрю исходник компонента
function QuoteLink( el ){
this._el = $(el);
$("body").mouseup( this._onMouseUp_body.bind(this) );
this._el.click( this._onClick.bind(this) );
}
QuoteLink.prototype._onMouseUp_body = function(){
this._text = $Range.stringify($Selection.getRange());
}
QuoteLink.prototype._onClick = function(){
alert(this._text);
}
и вижу, что назначаются два обработчика, что происходит в обработчиках, но не вижу реализацию назначения обработчиков, как находится выделение. Т.е. на каждом уровне у меня есть минимум необходимых деталей. В общем-то я не знаю вашей задачи, поэтому какие-то действия могут быть лишними или может быть лучший вариант организации кода, но вынесение библиотечного кода в любом случае не помешает
Кроме того, в моем случае нету никаких необоснованно глобальных переменных.
Вообще можно было еще всякие детали поубирать, вот только jQuery не предоставляет такие возможности. Хотя по задумке и не должна. Все должно быть максимально просто. Просто пишем код и пишем, и никаких дополнительных движений не делаем. Зачем разбивать код на вменяемые части? Ведь это дополнительные движения, сложно. Зачем повторное использование? Лучше мы в каждом плагине напишем то же самое. Зачем нам компоненты, если можно общаться с объектами через одну функцию ($(foo).dialog('open'))?
Сообщение от Cuprum
|
И "простоту" я упомянул зря - она не только не однозначна, но как оказалось, ситуативна
|
а в чем ситуативность?