私は 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 の実装です。
OK、それは素晴らしいシンプルな答えでしたね。しかし、そこから生じるいくつかの疑問があります:
- 「JavaScript」は非 Mozilla ブラウザでサポートされていますか? また、どの程度までサポートされていますか?
- "JScript" は Microsoft 以外のブラウザでサポートされていますか? また、どの程度までサポートされていますか?
これら 2 つの質問に基づいて、少し掘り下げて、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 でした。
OK、次に、ECMAScript バージョン 5 のサポートをテストするこのテストを実行しました: http://kangax.github.com/es5-compat-table/#showold
再び同じブラウザー (IE9、FF14、GC19) を使用すると、ESv5 はかなりよくサポートされているようです!
トリッキーなビットが来ます!私は Microsoft 出身で、C# や ASP.NET などの言語を使用してソフトウェアを作成しているため、当然、選択した IDE は Visual Studio (現在は 2010) です。JavaScript インテリセンスを見ると、ActiveXObject、Array、Object などが表示されます。
- VS2010 の IntelliSense を信頼する必要がありますか?
- ESv5 でサポートされているオブジェクトと機能のリファレンスはどこにありますか?
- ブラウザが特定のオブジェクトまたは機能をサポートしているかどうかを確認するにはどうすればよいですか?
- 準拠した ESv5 コードを作成するのに役立つ VS2010 より優れたものはありますか?
- Object、Number、Boolean などの既存のオブジェクトの実装をオーバーライドしても安全ですか、それとも既存の実装を拡張するだけですか?
最後に、jQuery についてです。コアのコンプライアンスと機能を自分で書くのは面倒だとしましょう。jQuery の上に置くライブラリを書くことはできますか... それとも、これは単なる失敗ですか?