Я хочу создать библиотеку на JavaScript/JScript/ECMAScript... как бы вы ее ни называли, которая будет ориентироваться на современные стандарты (HTML5, CSS3, ESv5) с учетом этого, любой браузер, поддерживающий стандарт! Теперь я знаю, что уже существует множество полезных библиотек, например, jQuery и MooTools. Конечно, они великолепны, и я уже использую их там, где это необходимо, но меня не следует заставлять прыгать на той же подножке, что и любого другого разработчика, только потому, что это популярно!
Итак, ради следующих вопросов давайте не будем интересоваться сторонними библиотеками, такими как jQuery и MooTools. Давайте перейдем к мельчайшим деталям JavaScript/JScript/ECMAScript.
Во-первых, я задал вопрос до этого (В чем разница между JavaScript, JScript и ECMAScript?), так как я не знал, в чем разница.
К счастью, я сделал следующие выводы:
ECMAScript — это спецификация языка. JavaScript и JScript являются диалектами ECMAScript.
JavaScript — это реализация Mozilla ECMAScript.
JScript — это реализация Microsoft ECMAScript.
Хорошо, это был хороший простой ответ, не так ли? Но вот некоторые вопросы, которые вытекают из этого:
- поддерживается ли «JavaScript» в браузерах, отличных от Mozilla, и в какой степени?
- поддерживается ли «JScript» в браузерах, отличных от Microsoft, и в какой степени?
Основываясь на этих двух вопросах, я немного покопался и провел простой тест на IE9, FF14 и GC19.
Вот тестовый код:
<!DOCTYPE html>
<html>
<head>
<title>HTML 5 Template</title>
<script language="JavaScript1.3">
jsver = "1.3";
</script>
<script language="JavaScript1.4">
jsver = "1.4";
</script>
<script language="JavaScript1.5">
jsver = "1.5";
</script>
<script language="JavaScript1.6">
jsver = "1.6";
</script>
<script language="JavaScript1.7">
jsver = "1.7";
</script>
<script language="JavaScript1.8">
jsver = "1.8";
</script>
<script type="text/javascript">
document.write("<B>Your browser supports JavaScript version " + jsver + ".</B>")
</script>
</head>
<body>
</body>
</html>
Результаты были следующими: IE9 = JSv1.3, FF14 = JSv1.8, GC19 = JSv1.7.
Хорошо, затем я провел этот тест, который проверяет поддержку ECMAScript версии 5: http://kangax.github.com/es5-compat-table/#showold
Опять же, используя те же браузеры (IE9, FF14, GC19), ESv5, похоже, поддерживается довольно хорошо!
Теперь самое сложное! Я пришел из Microsoft и пишу программное обеспечение, используя такие языки, как C #, ASP.NET и т. д., поэтому, естественно, я предпочитаю IDE Visual Studio (в настоящее время 2010). Когда я просматриваю Intellisense JavaScript, я вижу такие вещи, как ActiveXObject, Array, Object и т. д.
- Должен ли я доверять intellisense VS2010?
- Где я могу найти ссылку на объекты и функции, поддерживаемые ESv5?
- Как определить, поддерживает ли браузер определенный объект или функцию?
- Есть ли что-нибудь лучше, чем VS2010, что поможет мне написать код, совместимый с ESv5?
- Безопасно ли переопределять реализации существующих объектов, таких как Object, Number, Boolean и т. д., или мне следует просто расширить существующую реализацию?
Наконец, касаясь себя с jQuery. Скажем, я не могу утруждаться написанием основного соответствия и функциональности самостоятельно, могу ли я просто написать свою библиотеку, чтобы она сидела поверх jQuery... или это просто отговорка?