Это очень редкие случаи и это усложнит интерпретатор джаваскрипта...
Получится эволюция в сторону увеличения уровня языка: на ассемблере можно сделать всё и это будет работать ахриненно быстро, но ВСЁ придётся реализовывать самому, так как есть только простейшие команды. По мере навешивания высокоуровневого функционала становиться проще разрабатвывать программы, но высокоуровневые языки трудно переносимы, ограничены функционально, размер кода (готового) раздувается. Не факт, что реализация функционала самая оптимальная (ты не знаешь, так как это делал какой-то дядя, а не ты руками). интерпретатору проще и быстрее обработать 10 команд (если их будет всего допустим 50 простых), чем обработать 3, но если придётся выбирать из 300 и они будет сложные и редкоиспользуемые... |
Octane, вы аккуратнее у jQuery списывайте, там местами такой бред написан.
|
Наоборот, стараюсь не списывать, а написать сам и найти более короткое решение :)
|
в компилируемых языках более корткое - не значит более быстродействующее :)
Ну а в интерепретируемых конечно лучше стремиться к уменьшению количества кода... |
И опять makeArray :)
Доступна новая версия jQuery 1.3b1, в ней метод makeArray притерпел некоторые изменения и стал выглядеть следующим образом: var makeArray = function(array, results) { array = Array.prototype.slice.call( array ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; // Perform a simple check to determine if the browser is capable of // converting a NodeList to an array using builtin methods. try { Array.prototype.slice.call( document.documentElement.childNodes ); // Provide a fallback method if it does not work } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( array instanceof Array ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } То есть они проверяют не IE это или другой браузер, а возможность выполнить: Array.prototype.slice.call( document.documentElement.childNodes ); Может ли это значить, что есть еще браузеры, кроме IE, которые будут выдавать ошибку при таком способе? |
Проверять надо не браузер, а наличие доступной функции в нем.
Цитата:
|
Часовой пояс GMT +3, время: 04:04. |